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%!重要;}