Javascript 函数排序
Javascript function ordering.
我的javascript代码中有3个函数。我想在函数 1 和函数 2 都过度执行后立即调用第三个函数。
func_one();
func_two();
func_three(); // To be called as soon both of the above functions finish executing.
请注意,它们可能需要不同的时间,因为函数 1 和 2 分别用于获取地理位置和一些 ajax 请求。
这个怎么样?
func_one() {
// Do something
func_two();
}
func_two() {
// Do something
func_three();
}
func_three() {
// Do something
}
有两种方法可以解决这个问题。第一个是创建回调函数作为现有函数的参数。
function one(param_1 .. param_n, callback) {
var response = ... // some logic
if (typeof callback === "function") {
callback(response);
}
}
第二种方法是使用承诺,例如:
var p1 = new Promise(
function(resolve, reject) {
var response = ... //some logic
resolve(response);
}
}
var p2 = new Promise( ... );
p1.then(function(response1) {
p2.then(function(response2) {
//do some logic
})
})
你可以这样尝试
var oneFinish = false;
var twoFinish = false;
function one(){
//...
oneFinish = true; // this value may depends on some logic
}
function two(){
//...
twoFinish = true; // this value may depends on some logic
}
function three(){
setInterval(function(){
if(oneFinish && twoFinish){
//...
}
}, 3000);
}
由于您的函数func_one
并且func_two
正在进行服务调用,因此您可以在前一个函数的成功回调时调用这些函数。喜欢
func_one().success(function(){
func_two().success(function(){
func_three();
});
});
相关文章:
- JavaScript数组排序(函数)用于对表行进行排序,而不是排序
- 为什么我的JavaScript堆栈排序函数不起作用
- jquery Onclick函数带有导致双击的回调排序函数
- 如何在具有相同 ID 的 Javascript 中按排序函数对关联数组进行排序
- ExtJS 4-自定义排序函数只在点击列标题后执行
- 为什么这个排序函数不起作用
- JavaScript排序函数未按预期工作
- Jslint 无法识别错误排序函数的选项
- 这个JS排序函数是如何工作的
- 返回相同排序的排序函数
- JavaScript排序函数排序时不应该排序
- 返回键的javascript排序函数
- Javascript排序函数错误地更改了元素'数组中的位置
- jQuery 引导网格排序函数不一致
- JavaScript 排序函数
- JavaScript 命名排序函数
- 这个排序函数内部的机制是什么
- JavaScript的原生排序函数是如何实现的
- AngularJS中的自定义排序函数
- JavaScript中的排序函数不起作用