【问题标题】:How to handle "Promise { <pending> }" in javascript如何在 javascript 中处理“Promise { <pending> }”
【发布时间】:2021-10-23 13:39:35
【问题描述】:

我在javascript中有这个功能

const getData = async() => {

try {
    const serviceResponse = await someService("userId")
    return serviceResponse

  } catch (error) {
    console.log(error);
    
  }
}



const data = getData()
console.log(data)

每当我运行它时,我都会在控制台中得到它

 Promise { <pending> }

但是当我在函数本身中打印数据时,我得到了想要的值

const getData = async() =>  {
 try {
     const serviceResponse = await someService("userId")
     console.log.(serviceResponse)

   } catch (error) {
     console.log(error);
    
  }
 }



 getData()

以下函数是我从另一个函数中定义的导入函数

exports.someService = async(date,locationId,workerType) => {
    const value = await Attendance.find({})

    return value
}

请有人解释一下发生了什么?

【问题讨论】:

  • async 函数总是返回一个承诺。从async 函数返回的任何非承诺值都隐式包装在承诺中并返回。获取serviceResponse需要做什么:getData().then(serviceResponse =&gt; { ... })
  • 您需要等待您致电getData,即。 await getData()

标签: javascript ecmascript-6 promise


【解决方案1】:

你也需要await来自getData()的承诺-

const data = await getData()

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-03-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-07-13
    • 2020-11-17
    • 2018-03-26
    • 2017-07-26
    相关资源
    最近更新 更多