Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/439.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/74.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 级联调用函数jQuery_Javascript_Jquery - Fatal编程技术网

Javascript 级联调用函数jQuery

Javascript 级联调用函数jQuery,javascript,jquery,Javascript,Jquery,我想调用如下所示的函数 getValueListDataWithScol1(1029).done(function (kvalue) { konto = kvalue; getValueListDataWithScol1(1033).done(function (mvalue) { mws = mvalue; getValueListDataWithScol1(1101).done(function (wvalue) { wirt = wvalue;

我想调用如下所示的函数

getValueListDataWithScol1(1029).done(function (kvalue) {
  konto = kvalue;
  getValueListDataWithScol1(1033).done(function (mvalue) {
    mws = mvalue;
    getValueListDataWithScol1(1101).done(function (wvalue) {
      wirt = wvalue;
      LoadStaticData();
      LoadGridData();
    });
  });
});
但它是硬编码的,我想根据数组中的值动态地执行它。例如,在这里,如果数组有4个元素,那么它的三个级别应该添加另一个级别,并且在最后的调用中应该调用两个函数。我不知道如何实现它。这背后的原因是我需要load函数和
getValueListDataWithCol1
中被调用函数的值基本上都是回调函数

我试着这样做,但函数并没有等待异步调用,我知道我不应该等待,但如何让它等待。我无法将呼叫更改为同步

function loaddata(ids) {
  var d = new $.Deferred();
  for (var key in ids) {
    getValueListDataWithScol1(ids[key]).done(function (value) {
      lists[ids[key]] = value;
    });  
    delete ids[key];
    loaddata(ids)
  }
  d.resolve(lists);
  return d.promise();
}

由于您的请求似乎并不相互依赖,因此您可以映射一个请求数组,并使用
$.when
在解决所有请求时运行

$.when.中的参数将与原始数组的顺序相同

var数组=[5,2,6,4];
var promisearray=array.map(函数(num,i){
console.log('Start request#',i+1)
返回dummyRequest(num)。然后返回函数(res){
console.log('End request#',i+1)
返回{num:num,res:res}
});
});
$.when.apply(null,promisearray).then(function(){
var allResults=[].slice.call(参数);
处理最终结果(所有结果);
});
函数processFinalResults(arr){
console.log('最终结果:');
log(JSON.stringify(arr));
}
函数dummyRequest(num){
var promise=$.Deferred();
setTimeout(函数(){
承诺。解决(num*100);
},num*200);//改变伪请求完成顺序的备用延迟
回报承诺;
}
。作为控制台包装{最大高度:100%!重要;}