javascript - 创建动态号码回调函数
问题描述
我在 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
命令,怎么做?谢谢你
解决方案
您可以使用递归,当计数参数为零时它将退出并运行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);
推荐阅读
- c - 尝试初始化可变大小字符串的动态数组时出现总线错误
- javascript - 在网页上显示抓取的信息
- javascript - 表单验证未验证
- c++ - 为什么 if (fork() == 0) { getpid() } 和 popen() 进程返回相同的进程 ID?
- django - 没有可重定向到的 URL。尝试使用具有外键的另一个模型时,提供 url 或在模型上定义 get_absolute_url 方法
- arrays - Swift UI、Use Picker、forEach 和 Section 一起出现错误
- java - 深入了解 Spring JPA 原生查询
- python - 用于存储信息和检索的字典的替代品?
- python - Jupyter 循环播放声音
- ruby-on-rails - 如何解决“加载资源失败:服务器响应状态为 404(未找到)”?