在Javascript中回调函数

时间:2016-09-15 06:32:28

标签: javascript

我有两个函数,函数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函数。

2 个答案:

答案 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();
}