当从函数显式返回一个 new Promise
时,我们得到传入的 resolve
和 reject
函数。我们可以在我们的函数中使用这些方法在任何时候指示 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 anew 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/