鳳凰求蠱
2021-11-18 20:58:14
我試圖通過向兩個 API 端點發出 HTTP 請求來在頁面上呈現一些元素。當兩個調用都返回時,我想調用第三個函數。出于性能原因,我不想鏈接兩個 API 端點調用。這是我的最小示例:$(document).ready(function () { $.get({ url: `/api/one`, success: function (response) { callback_one(response); } }); $.get({ url: `/api/two`, success: function (response) { callback_two(response); } }); // want to call callback_three() after both of the above requests have completed.});我該如何正確地做到這一點?我讀過 Promises、async/await、Deferred 等,但我不確定 2019 年的最佳實踐是什么。
3 回答

交互式愛情
TA貢獻1712條經驗 獲得超3個贊
您可以使用Promise.all并執行以下操作。
const urlsAndCallbacks = [
{
url: urlOne,
callback: callbackOne
},
{
url: urlTwo,
callback: callbackTwo
},
];
Promise.all(urlsAndCallbacks.map(item =>
$.get({
url: item.url,
success: function (response) {
item.callback(response);
}
})
))
.then(data => {
fetchThirdUrl();
});

冉冉說
TA貢獻1877條經驗 獲得超1個贊
另一種方法是使用 jQuery $.when()
$.when($.get('/api/one'), $.get('/api/two')).done(function(res1, res2) {
callback_one(res1);
callback_two(res2);
callback_three();
});
添加回答
舉報
0/150
提交
取消