【问题标题】:Async function not returning value, but promise异步函数不返回值,但承诺
【发布时间】:2021-09-27 01:07:25
【问题描述】:

我有一个异步函数:async function getUrl() { let url = await ngrok.connect(3000) return url }。根据我的理解,异步函数等待承诺被履行,然后返回值。在函数内部,url是一个字符串,但是当我调用函数时,它返回了一个promise。

【问题讨论】:

  • 我不知道你认为你从哪里学到的,但那是not what async does at all。 Async 只是将一个函数包装在一个 Promise 中,return 语句触发 Promise resolve,错误触发 Promise reject。反过来,Await 可以让您使用 Promise,让您编写 .then() 处理“好像这是一个正常的返回”,并将 .catch() 转回正常的抛出。
  • 那不使用.then如何获取promise的值呢?
  • 您应该在刚刚回复的评论中单击一个链接,以了解您想了解的有关使用 asyncawait 的所有信息,初始登录页面非常方便地涵盖基础知识。

标签: node.js async-await


【解决方案1】:

async function myPromiseFunction() {
  return Promise.resolve('hi')
}

(async () => {
  console.log(await myPromiseFunction());
})()

它是如何工作的,你需要在调用你的promise函数时使用await或者使用.then/.catch(我建议不要,并且学习async/await)

【讨论】:

    猜你喜欢
    • 2018-12-22
    相关资源
    最近更新 更多