当从函数中显式返回new Promise
时,我们会传入resolve
和reject
个函数。我们可以在函数内部使用这些方法来指示解析或拒绝承诺,包括内部对其他函数的内部回调。
考虑:
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。我错过了一招吗?有没有办法做到这一点?
答案 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
。