在需要非异步函数的地方传递异步函数可以吗?
is it ok to pass async function where non async function needed?
如下所示,为预期非异步函数的参数提供了异步函数,但它起作用了,为什么?
function getCallback(param, callback) {
setTimeout(() => {
callback && callback(param);
}, 1);
}
getCallback(13, async (param) => {
console.log(param);
});
---
13
It worked, why?
因为 async
函数只是一个 return 承诺的函数,可以像任何其他函数一样调用。您的 getCallback
忽略了 callback()
的 return 值,因此 return 是什么并不重要。
Is it ok to pass async
function where no async
function is needed?
不,通常不能将 async
函数(或另一个 return 承诺的函数)传递给不期望回调到 return 的函数一个承诺。 Promise 不应被忽略,它们应该被 .then()
链接或 await
ed,并且它们需要特殊的错误处理。如果 getCallback
不处理(承诺)错误,则不得传递错误的回调。
如下所示,为预期非异步函数的参数提供了异步函数,但它起作用了,为什么?
function getCallback(param, callback) {
setTimeout(() => {
callback && callback(param);
}, 1);
}
getCallback(13, async (param) => {
console.log(param);
});
---
13
It worked, why?
因为 async
函数只是一个 return 承诺的函数,可以像任何其他函数一样调用。您的 getCallback
忽略了 callback()
的 return 值,因此 return 是什么并不重要。
Is it ok to pass
async
function where noasync
function is needed?
不,通常不能将 async
函数(或另一个 return 承诺的函数)传递给不期望回调到 return 的函数一个承诺。 Promise 不应被忽略,它们应该被 .then()
链接或 await
ed,并且它们需要特殊的错误处理。如果 getCallback
不处理(承诺)错误,则不得传递错误的回调。