解决内部回调中的异步功能

时间:2016-02-22 18:44:21

标签: javascript async-await ecmascript-next

当从函数中显式返回new Promise时,我们会传入resolvereject个函数。我们可以在函数内部使用这些方法来指示解析或拒绝承诺,包括内部对其他函数的内部回调。

考虑:

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

当我们还无法等待时(例如此db回调的情况下)使用async而没有显式返回new Promise时,是否存在等价物?

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

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

1 个答案:

答案 0 :(得分:1)

  

在没有明确返回async的情况下使用new Promise时是否存在等价物。

没有。 async / await仅适用于承诺(或者说明),您必须promisify其他所有自己。在你的情况下,这很可能是像

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

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

(可能在await之后使用return