私は次のものを持っています。
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 )」は、async を false に設定したことを意味します。これはおそらく非効率的であることを認識しています。そして、すべての呼び出しを同時にロードしたいと思います。唯一の問題は、それらを async false に設定していない場合、ドロップダウンが設定される前にコードの 2 番目の部分が実行される可能性があることです。
私は Jquery Deferreds でいくつかの試みを試みましたが、中絶としか言いようのない結果になりました。
私が達成しようとしている唯一のことは、任意の順序でコードの adimport/2 番目の部分の前にルックアップ呼び出しが終了することです。私がきちんとATMを実装できる唯一の解決策です。
これは遅延関数の適切な場所でしょうか?また、これまでに行ったことがないので、正しく実装する方法を理解できる方向に誰かが私を向けることができますか?