微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

嵌套在函数内的异步函数

如何解决嵌套在函数内的异步函数

我正在使用一个框架,在其中找到了这样的代码

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 举报,一经查实,本站将立刻删除。