我无法使用then()从诺言中检索数据。我要去哪里错了?
async function A(){
await new Promise((resolve, reject) => setTimeout(()=>{},1000));
return 45;
}
A().then(data => console.log(data))
我正在使用nodejs运行此代码。 我希望输出显示45。但是该程序仅执行1秒钟,并且不打印任何内容。 如果删除超时语句,则可以打印45。 我要去哪里错了?
答案 0 :(得分:1)
您需要兑现承诺,然后return
才能运行。
async function A() {
await new Promise((resolve, reject) => setTimeout(() => resolve(), 1000));
return 45;
}
A().then(data => console.log(data))
您还可以从A
函数返回promise,然后使用async/await
。
function A() {
return new Promise((resolve, reject) => {
setTimeout(() => resolve(45), 1000)
})
}
(async() => {
const res = await A();
console.log(res)
})()
答案 1 :(得分:1)
您的函数A应该返回一个诺言。
function A() {
return new Promise((resolve, reject) => setTimeout(() => resolve('hello'), 1000));
}
A().then(data => console.log(data))
答案 2 :(得分:0)
函数A应该返回一个Promise,并与IFI(立即函数调用方法)一起使用async / await
function A(){
return new Promise((resolve, reject) => setTimeout(()=>{resolve(100)},1000));
}
(async () => {
var data = await A()
console.log(data)
})();