我希望hello函数返回Promise。为什么它返回未定义?
我认为等待功能使我感到困惑。我试图解释自己的理解,但无法用语言表达。
有人可以用最基本的方式向我解释一下吗?
function wait (ms =0){
return new Promise((resolve)=>{
setTimeout(resolve, ms)
})
}
async function hello(){
const nw = await wait(2000);
console.log(nw);
}
hello();
答案 0 :(得分:1)
除非您resolve
带有参数,否则您将一无所获。您想要:
setTimeout(() => { resolve('hello') }, ms);
这里的键是setTimeout()
不会给您提供的函数任何参数,它只是在那时运行它。在这种情况下,它与:
// Wait ms milliseconds
resolve();
答案 1 :(得分:0)
您的wait
函数返回一个Promise。但是,当您await
使用它时,nw
是承诺的结果–在您的情况下,undefined
是因为您不带任何参数调用resolve
而不是承诺本身。
您的代码与此(或多或少)相同
function wait (ms = 0){
return new Promise((resolve) => {
setTimeout(() => { resolve(); }, ms) //Resolve the promise after the given time
});
}
function hello() {
wait(2000)
.then((result) => {
const nw = result;
console.log(nw);
})
}