我有以下。
var lookupInit = function () {
http.get('api/employmenttype', null, false)
.done(function (response) {
console.log('loaded: employmenttype');
vm.lookups.allEmploymentTypes(response);
});
http.get('api/actionlist', null, false)
.done(function (response) {
console.log('loaded: actionlist');
vm.lookups.allActionListOptions(response);
});
http.get('api/company', null, false)
.done(function (response) {
console.log('loaded: company');
vm.lookups.allCompanies(response);
});
//... x 5 more
return true;
};
// somewhere else
if (lookupInit(id)) {
vm.userInfo.BusinessUnitID('0');
vm.userInfo.BuildingCode('0');
if (id === undefined) {
console.log('api/adimport: latest');
http.json('api/adimport', { by: "latest" }, false).done(viewInit);
}
else if (id !== undefined) {
console.log('api/adimport: transaction');
http.json('api/adimport', { by: "transaction", TransactionId: id }, false).done(viewInit);
}
} else {
console.log('User info init failed!');
}
以下“http.get('api/employmenttype', null, false )”表示我将异步设置为 false。我知道这可能效率低下。我希望同时加载所有呼叫。唯一的问题是,如果我没有将它们设置为 async false,我的代码的第二部分可能会在填充下拉列表之前执行。
我已经尝试过几次使用 Jquery Deferreds 的尝试,但它们导致了我只能描述为流产的结果。
我想要实现的唯一一件事是查找调用在我的代码的 adimport/第二部分之前完成,以任何顺序......但是让每个调用等待它之前的一个调用完成 EG:异步,似乎我能够体面地实现 ATM 的唯一解决方案。
这将是延迟函数的合适位置吗?谁能指出我可以弄清楚如何正确实现它的方向,因为我以前从未这样做过?