我有两个函数,函数submitCallbackInfo
是循环中的回调函数,XYZ
。我只想在不使用超时或jQuery的情况下从XYZ
收到所有数据时执行submitCallbackInfo
。
for (var i = 0; i < 10; i++) {
var id;
myHttp1.connect(url, 'GET', data, submitCallbackInfo);
}
setTimeout(XYZ, 5000);
我真正想要的是仅在XYZ
执行10次时调用submitCallbackInfo
函数。
答案 0 :(得分:1)
检查
中counter
函数callback
的值
var length = 10;
var count = 0;
function submitCallbackInfo() {
if (++count === length) {
createC2VCall();
}
}
for (var i = 0; i < length; i++) {
myHttp1.connect(url, 'GET', data, submitCallbackInfo);
}
如果Promise
返回myHttp1.connect
,则可以使用 Promise-object
答案 1 :(得分:0)
替换@ Rayon的答案,您可以将count作为参数传递。您可以使用.bind()
来执行此操作。
以下是基本实现
for (var i = 0; i < 10;) {
//myHttp1.connect(url, 'GET', data, submitCallbackInfo.bind(++i));
test(submitCallbackInfo.bind(null, ++i))
}
function submitCallbackInfo(count){
var maxCount = 10;
console.log('Inside Callback', count)
// Do your stuff
if(count === maxCount) XYZ();
}
function XYZ(){
console.log('Inside XYZ')
}
function test(callback){
if(callback) callback();
}