javascript - 在内部回调中解析异步函数

标签 javascript async-await ecmascript-next

当从函数显式返回一个 new Promise 时,我们得到传入的 resolvereject 函数。我们可以在我们的函数中使用这些方法在任何时候指示 promise 的解决或拒绝,包括内部对其他函数的内部回调。

考虑:

const doSomeDbWork = function (db) {
   return new Promise((resolve, reject) => {
     db.doStuff(result => resolve(result));
   });
};

当我们不能等待时(就像在这个数据库回调的情况下),在使用 async 而没有显式返回 new Promise 时是否有等效项?

const doSomeDbWork = async function (db) {
  db.doStuff(result => /* ? */);
};

我目前认为这是不可能的,我只需要返回一个新的 Promise。我错过了一个把戏吗?有办法做到这一点吗?

最佳答案

Is there an equivalent when using async without explicitly returning a new Promise.

没有。 async/await 只适用于 promises(或 thenables),你必须 promisify其他一切你自己。在您的情况下,这很可能类似于

async function doSomeDbWork(db) {
    return new Promise(db.doStuff);
}

async function doSomeDbWork(db) {
     return new Promise(resolve => { db.doStuff(resolve); });
}

(可能在 return 之后有一个 await)。

关于javascript - 在内部回调中解析异步函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35561391/

相关文章:

c# - 在转换器 (IValueConverter) 中使用 "await"不起作用?

node.js - Node js从http get异步函数返回未定义的值

c# - 异步任务取消 c# xamarin

javascript - 如何测试一个函数是否被装饰器包裹(javascript)

javascript - 具有多个更改的扩展属性 : one-liner ecma immutability

javascript - 对多个单词使用 str.replace

javascript - 取消 MVC 表单提交

javascript - 在 extjs 文本字段中如何动态更改 afterSubTpl?

带有异步函数的javascript for循环

javascript - CSS动画汉堡包图标并删除滚动类?