Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/371.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 无法从承诺中检索数据_Javascript_Node.js_Promise - Fatal编程技术网

Javascript 无法从承诺中检索数据

Javascript 无法从承诺中检索数据,javascript,node.js,promise,Javascript,Node.js,Promise,我无法使用then()从承诺中检索数据。我哪里做错了 async function A(){ await new Promise((resolve, reject) => setTimeout(()=>{},1000)); return 45; } A().then(data => console.log(data)) 我正在用nodejs运行这段代码。 我希望输出打印45。但是程序只执行1秒,不打印任何内容。 如果删除超时语句,则可以打印45。 我哪里出错了

我无法使用then()从承诺中检索数据。我哪里做错了

async function A(){
    await new Promise((resolve, reject) => setTimeout(()=>{},1000));
    return 45;
}
A().then(data => console.log(data))
我正在用nodejs运行这段代码。 我希望输出打印45。但是程序只执行1秒,不打印任何内容。 如果删除超时语句,则可以打印45。
我哪里出错了?

您需要解决您的承诺,然后
return
才能运行

async function A(){
    await new Promise((resolve, reject) => setTimeout(()=>{},1000));
    return 45;
}
A().then(data => console.log(data))
异步函数A(){
等待新的承诺((解析,拒绝)=>setTimeout(()=>resolve(),1000));
返回45;
}

A()。然后(data=>console.log(data))
您需要解决您的承诺,然后
return
可以运行

异步函数A(){
等待新的承诺((解析,拒绝)=>setTimeout(()=>resolve(),1000));
返回45;
}

然后(data=>console.log(data))
函数A应该返回一个承诺

函数A(){
返回新承诺((resolve,reject)=>setTimeout(()=>resolve('hello'),1000));
}

然后(data=>console.log(data))
函数A应该返回一个承诺

函数A(){
返回新承诺((resolve,reject)=>setTimeout(()=>resolve('hello'),1000));
}

A()。然后(data=>console.log(data))
函数A应返回一个承诺,并与IFI(立即函数调用方法)一起使用async/await


函数A应该返回一个承诺,并与IFI(立即函数调用方法)一起使用async/await


谢谢Vracar,这起作用了,因为我还没有解决承诺,你能解释一下为什么程序在1秒后停止而不是无限期地等待(承诺处于挂起状态)。它在
wait
关键字处停止,因为有代码等待解决承诺。但是由于您的承诺从未得到解决,
return
从未被调用。是的,为什么
等待
停止程序执行,而不是等待承诺得到解决?我发布的代码从未到达
return
语句,但它在1秒后停止执行。我无法理解为什么它停止而不是等待。@John Bonda我不知道你在问什么。谢谢Vracar,这起作用了,因为我没有解决承诺,你能解释为什么程序在1秒后停止而不是无限期等待(承诺处于待定状态)。它在
wait
关键字处停止,因为那里的代码等待承诺得到解决。但是由于您的承诺从未得到解决,
return
从未被调用。是的,为什么
等待
停止程序执行,而不是等待承诺得到解决?我发布的代码从未到达
return
语句,但它在1秒后停止执行。我无法理解为什么它停止而不是等待。@John Bonda我不知道你在问什么。