首页 > 解决方案 > 创建动态号码回调函数

问题描述

我在 javascript 中动态创建大量回调函数时遇到问题。例如我有这样的功能。

function process(value, callback) {
    console.log('process ' + value)
    callback()

}

function complete() {
    console.log('complete')
}

function running(count){
     // number process function is two
    if (count==2) {
        process('number one', function () {
            process('number two', function () {
                complete()  => // last callback is closed by complete function
         })
      })
    }

    // number process function is three
    if (count==3) {
         process('number one', function () {
             process('number two', function () {
                process('number three', function () {
                    complete() => // last callback is closed by complete function
                })
             })
        })
      }
   }  

running(3);

输出 :

过程一

进程号二

进程号三

完全的

我想创建数字回调是动态的并且由完整的函数关闭,而不是使用if/switch命令,怎么做?谢谢你

标签: javascriptcallback

解决方案


您可以使用递归,当计数参数为零时它将退出并运行complete,否则它将调用process函数。

function process(value, callback) {
  console.log('process ' + value)
  callback()

}

function complete() {
  console.log('complete')
}

const p = ['three', 'two', 'one']

function running(count) {
  if (count) {
    process(`number ${p[count - 1]}`, () => {
      running(count - 1)
    })
  } else {
    complete()
  }
}

running(3);


推荐阅读