如何解决嵌套在函数内的异步函数
block1
fun_1(params,callback) {
fun_2(params,callback) {
...
fun_n(params,callback) {
asyncFunction().then(callback).catch(callback)
}
由于asyncFunction
来自已弃用的npm package
,因此我将借此机会对其进行重构。
我想改成这样:
block2
fun_1(params).then(callback)
fun_1
所在的位置:
fun_1(params) {
fun_2(params) {
return asyncFunc() ???
}
}
第二个模式比第一个模式正确吗?
解决方法
似乎正确。但是,所有函数在调用内部函数时都需要返回该承诺。例如:
fun_1(params) {
fun_2(params) {
return asyncFunc();
}
return fun_2(params);
}
fun_1(params).then(callback);
,
您的问题中没有太多信息,但是我将尝试用我所拥有的来回答。
为了使fun_1
与.then
链接起来,它需要返回一个Promise:
function fun_1() {
return new Promise((resolve,reject) => {
// Do some tasks and resolve when complete
resolve(/* some data */)
}
}
或者,通过使用async
关键字,它只是Promise的语法糖:
async function fun_1() {
await some_async_task()
return; // does the same as resolve would in Promise
}
为了重构代码,您将不得不在promise中移动异步内容和回调。 如果您想澄清问题中的一些内容以获得更好的答案,请告诉我。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。