除了Promises之外,还有什么模式可以编排函数调用吗
Is there any pattern to orchestrate function calls besides Promises?
我正试图逃离末日金字塔。想象一下以下函数调用序列:
$.wait(1000).done(function() {
//Do something
$.wait(5000).done(function(){
//Do something else
$.wait(2200).done(function(){
//Do something else
});
});
});
其中$.wait函数定义为:
$.wait = function (duration) {
return $.Deferred(function (dfd) {
setTimeout(dfd.resolve, duration);
});
};
问题是,我如何重构上面的代码,使其变得可读/可维护?
好吧,您的代码中已经有承诺(或者至少有延迟),所以没有充分的理由寻找不同的编码模式。但是,您可以通过使用强大的then
方法链接promise回调而不是嵌套它们(使用done
)来压平回调金字塔:
$.wait(1000).then(function() {
// ^^^^
//Do something
return $.wait(5000);
// ^^^^^^
}).then(function() {
// ^^^^
//Do something else
return $.wait(2000);
// ^^^^^^
}).then(function() {
// ^^^^
//Do something else
});
这与您的代码完全等效。
相关文章:
- 是否可以将一个函数输入连接到另一个函数调用的文本
- 在输入字段上有两个函数调用,一个在Blur上,一个不在Angular中
- 如何在Javascript函数调用中循环变量
- Javascript:应为赋值或函数调用,但实际看到的却是表达式
- 如何远程检查JavaScript应用程序的函数调用堆栈
- javascript函数调用不起作用
- 为什么这个函数调用会破坏程序并导致未定义的变量
- 如何通过函数调用设置图像的src
- 从全局函数调用Ember控制器上的方法
- 为什么Jquery$.ajax在函数调用中触发所有statusCode,即使调用成功
- 函数调用的变量更改未显示在角度引导模式窗口中
- 使用函数调用模式扩展对象.怎样
- Javascript 揭示模块模式 - 这个和内部函数调用
- 方法与函数调用模式
- 除了Promises之外,还有什么模式可以编排函数调用吗
- 方法调用模式vs函数调用模式
- 理解构造函数调用模式中的“this”
- 使用jquery插件模式从公共函数调用私有函数
- 在Chrome开发模式下设置函数调用的断点
- 在除法上调用JavaScript函数(bootstrap模式弹出)