我使用以下代碼從網站獲取資料,我得到 330 個類別的串列。基于 woocommerce rest api 檔案,此端點僅回傳前 100 個類別,因此我必須使用?per_page=
and&page=
并將其放入回圈中。我的問題是這段代碼不是按順序獲得的,有時它會得到最后 30 個,然后是剩下的 300 個,或者首先得到第一個 100,然后是 30,然后是 100,然后休息。這是用于ajax中的異步控制嗎?如何在這個回圈中呼叫 ajax?
for(let i=0; i <= 3; i ){
var get_cat_data = jQuery.get(url '/wp-json/wc/v3/products/categories/?consumer_key=' ck '&consumer_secret=' cs '&per_page=100&page=' (i 1));
get_cat_data.done(function(response_cat){
console.log(response_cat);
jQuery.each(response_cat, function(index, value){
_cat_array.push(value.id ':' value.name);
});
jQuery('form.submit-new-product-data #form__categories').val(_cat_array);
});
}
uj5u.com熱心網友回復:
假設您的代碼在函式內部,請創建該函式async
...然后您可以執行此操作
for (let i=0; i <= 3; i ){
const response_cat = await jQuery.get(url '/wp-json/wc/v3/products/categories/?consumer_key=' ck '&consumer_secret=' cs '&per_page=100&page=' (i 1));
jQuery.each(response_cat, function(index, value){
_cat_array.push(value.id ':' value.name);
});
jQuery('form.submit-new-product-data #form__categories').val(_cat_array);
}
您也可以并行發出請求,但以正確的順序處理它們
const promises = [];
for (let i=0; i <= 3; i ) {
promises.push(jQuery.get(`${url}/wp-json/wc/v3/products/categories/?consumer_key=${ck}&consumer_secret=${cs}&per_page=100&page=%{i 1}`));
}
const results = await Promise.all(promises);
results.forEach(response_cat => {
jQuery.each(response_cat, (index, {id, name}) => _cat_array.push(`${id}:${name}`));
}
jQuery('form.submit-new-product-data #form__categories').val(_cat_array);
當然,如果您的代碼不在函式內,您可以始終將其包裝在 async IIFE 中,以啟用 async/await
(async () => {
// your code
})();
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/531107.html