我有一个在单击按钮时调用的函数,并且我试图在单击时通过 API 获取数据。下面是点击触发的函数。我必须通过 API 获取一次数据,然后根据获取的数据中的一个字段,我需要从另一个数据表中获取另一个数据。所以,我设计了我的编码如下,我的控制台看起来像这样:
控制台看起来像这样:
全部完成 []length: 0__proto__: Array(0)
1466(for循环期间记录的customer_id)
1663(for循环期间记录的customer_id)
我认为基于 promise 逻辑,所有完成的事情最后都应该被阅读,我在这里遗漏了什么吗?所以理想情况下,Alldone 控制台应该在最后调用包含基于 customer_ids 1466、1663 获取的数据。
我不确定我错过了什么,我是 javascript 以及堆栈溢出的新手,所以非常感谢详细的回答。
function test(pmt_id, crm_supplier_id) {
const url = 'http://127.0.0.1:8000/creditor-detail/'+pmt_id+'/supplier/'+crm_supplier_id+'/'
let promises = [];
const results = fetch(url)
.then(resp => resp.json())
.then(function (item) {
var list = item;
for (var i in list) {
promises.push(getCustomer(list[i].customer_id));
console.log(list[i].customer_id)
}
})
Promise.all(promises)
.then((results) => {
console.log("All done", results);
})
.catch((e) => {
console.log(err)
});
}
//second function
function getCustomer(customer_id) {
return new Promise((resolve, reject) => {
const url = 'http://127.0.0.1:8000/customer-detail/' + customer_id+ '/';
fetch(url)
.then(resp => resp.json())
.then((item) => resolve(item))
.catch