无法从承诺中检索数据

时间:2019-02-26 11:41:02

标签: 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。 我要去哪里错了?

3 个答案:

答案 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)
    })();