Javascript 等待函数完成调用其他函数
我有一个调用另一个函数2的函数1。Function2有一个for循环,它在其中调用function3。我想在对函数3的所有3个调用完成后执行一条语句。我如何做到这一点Javascript 等待函数完成调用其他函数,javascript,callback,Javascript,Callback,我有一个调用另一个函数2的函数1。Function2有一个for循环,它在其中调用function3。我想在对函数3的所有3个调用完成后执行一条语句。我如何做到这一点 function1: function(){ function2(args, doSomething(returnValue) { if(returnValue == true){ // do something here } }); } function2
function1: function(){
function2(args, doSomething(returnValue) {
if(returnValue == true){
// do something here
}
});
}
function2: function(args, callback){
for(var i = 0; i < 3; i++){
function3(args);
}
// if function3 completed all 3 times
callback(true);
}
function1:function(){
函数2(参数、剂量测量(返回值){
if(returnValue==true){
//在这里做点什么
}
});
}
函数2:函数(参数、回调){
对于(变量i=0;i<3;i++){
功能3(args);
}
//如果功能3全部完成3次
回调(true);
}
我认为您所需要做的就是在function2()
中每次运行for循环时生成一个递增的变量,并检查它在for循环之外是否足够高
var timesCalled = 0
function1: function(){
function2(args, doSomething(returnValue) {
if(returnValue == true){
// do something here
}
});
}
function2: function(args, callback){
for(var i = 0; i < 3; i++){
function3(args);
timesCalled++
}
if (timesCalled >= 2){// if function3 completed all 3 times
callback(true);
}
}
var timesCalled=0
函数1:函数(){
函数2(参数、剂量测量(返回值){
if(returnValue==true){
//在这里做点什么
}
});
}
函数2:函数(参数、回调){
对于(变量i=0;i<3;i++){
功能3(args);
时报++
}
if(timesCalled>=2){//if函数3全部完成3次
回调(true);
}
}
如果您想确保function3执行您希望的3次操作,那么将增量放入function3中。我希望这有帮助 谷歌关键词:promises@zerkms这是Harmony(ECMAScript 6)提案的一部分。我想要支持所有主要浏览器的东西。你认为它会起作用吗?有大量ES5库。对
function3()
的调用将完成执行。在你的问题中,function3
如何表示它已经完成了一项异步任务还不清楚。承诺并不是什么神奇的东西。它们只是一种设计模式。因此,它们可以用javascript实现。为了弄清楚它们是如何工作的,我自己实现了一个promise库。所以承诺是纯javascript的,不需要更新语言或解释器。ES6中的承诺基本上是对标准库(包括数学对象、DOM等)的补充