javascript - 在 resolve 中返回另一个异步函数

标签 javascript promise

我有一个像这样的函数调用:

await someFunction(foo);

someFunction 定义如下:

const someFunction = foo => {
  return new Promise((resolve, reject) => {
    if (foo) {
      return resolve(someOtherPromise());
    }
    reject();
  }
}

这是有效的代码吗?我已经测试过了,似乎没问题。

如果 footrueawait someFunction() 将转换为 await someOtherPromise() 是否正确即它会继续等待 someOtherPromise 解决吗?

最佳答案

是的,它是有效的代码并且有效 by resolving with a promise ,但闻起来像 Promise constructor antipattern .相反,我建议写

function someFunction(foo) {
  if (foo)
    return someOtherPromise();
  else
    return Promise.reject();
}

async function someFunction(foo) {
  if (foo)
    return someOtherPromise();
  else
    throw;
}

(最好抛出一个带有消息的 new Error,而不是 undefined)

关于javascript - 在 resolve 中返回另一个异步函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64154434/

相关文章:

javascript - 无法在 html head 中链接 css 和 js 文件

javascript - 根据下拉列表项选择更改 mvc 中的 View

javascript - 如何在 Sweet Alert 2 Promise 中传递数组

javascript - 根据选项将 axios.get URL 传递到 axios.all

javascript - 如何在 javascript 中创建指向对象属性的指针?

javascript - Vue组件内的数组在登录控制台时有多个reactiveSetter和reactiveGetter方法

javascript - 如何从 Angular 中的 $q.defer().promise 返回集合?

javascript - promise 的 Node 模式

sockets - perl6 IO::Socket::INET 与去年相比的变化以及违背的 promise

javascript - 如果没有解决,如何取消最后的 promise ?