如何控制台记录一个承诺?
How to console log a promise?
为什么这段代码不能打印出任何东西?
预期的结果应该是async result is: 2
。但它是0.
"use strict"
// run consoleLogPromise
consoleLogPromise( PromiseAChangeCount() );
// a utility which will always console log any promise
async function consoleLogPromise(callback) {
//const res = await callback(); TypeError: callback is not a function
const res = await callback;
console.log("async result is: ", res);
}
// a promise returning function
async function PromiseAChangeCount() {
let count = 0;
await setTimeout(() => {
count = 2
}, 200);
return count;
}
你必须做类似 this.Return 来自 PromiseAChangeCount
的承诺,它解析 setTimeout
中的值,然后你可以在 consoleLogPromise
[=14 中等待它=]
"use strict"
// run consoleLogPromise
consoleLogPromise(PromiseAChangeCount());
// a utility which will always console log any promise
async function consoleLogPromise(callback) {
//const res = await callback(); TypeError: callback is not a function
const res = await callback;
console.log("async result is: ", res);
}
// a promise returning function
async function PromiseAChangeCount() {
let count = 0;
return new Promise((resolve, _) => {
setTimeout(() => {
count = 2;
resolve(count)
}, 200);
})
}
如评论所述;应该添加一个真正的 Promise await later(200);
setTimeout doesn't return a promise, so await doesn't have any effect.
– Felix Kling
这将 return 一个承诺。 return new Promise
"use strict"
// run consoleLogPromise
consoleLogPromise( PromiseAChangeCount() );
// a utility which will always console log any promise
async function consoleLogPromise(callback) {
//const res = await callback(); TypeError: callback is not a function
const res = await callback;
console.log("async result is: ", res);
}
// a promise returning function
async function PromiseAChangeCount() {
let count = 0;
await later(200);
count = 2;
return count;
}
function later(delay) {
return new Promise(function(resolve) {
setTimeout(resolve, delay);
});
}
为什么这段代码不能打印出任何东西?
预期的结果应该是async result is: 2
。但它是0.
"use strict"
// run consoleLogPromise
consoleLogPromise( PromiseAChangeCount() );
// a utility which will always console log any promise
async function consoleLogPromise(callback) {
//const res = await callback(); TypeError: callback is not a function
const res = await callback;
console.log("async result is: ", res);
}
// a promise returning function
async function PromiseAChangeCount() {
let count = 0;
await setTimeout(() => {
count = 2
}, 200);
return count;
}
你必须做类似 this.Return 来自 PromiseAChangeCount
的承诺,它解析 setTimeout
中的值,然后你可以在 consoleLogPromise
[=14 中等待它=]
"use strict"
// run consoleLogPromise
consoleLogPromise(PromiseAChangeCount());
// a utility which will always console log any promise
async function consoleLogPromise(callback) {
//const res = await callback(); TypeError: callback is not a function
const res = await callback;
console.log("async result is: ", res);
}
// a promise returning function
async function PromiseAChangeCount() {
let count = 0;
return new Promise((resolve, _) => {
setTimeout(() => {
count = 2;
resolve(count)
}, 200);
})
}
如评论所述;应该添加一个真正的 Promise await later(200);
setTimeout doesn't return a promise, so await doesn't have any effect. – Felix Kling
这将 return 一个承诺。 return new Promise
"use strict"
// run consoleLogPromise
consoleLogPromise( PromiseAChangeCount() );
// a utility which will always console log any promise
async function consoleLogPromise(callback) {
//const res = await callback(); TypeError: callback is not a function
const res = await callback;
console.log("async result is: ", res);
}
// a promise returning function
async function PromiseAChangeCount() {
let count = 0;
await later(200);
count = 2;
return count;
}
function later(delay) {
return new Promise(function(resolve) {
setTimeout(resolve, delay);
});
}