我有一個這樣的數(shù)組:var ids = [8372839402, 8392615782, 3677281302];插入的是 id 值。基于這個 ID,我必須從數(shù)據(jù)庫中為每個 ID 獲取一些信息。基本上我通過使用位于 db.js 中的以下函數(shù)獲取數(shù)據(jù):function getdata(get_command) { var request = new XMLHttpRequest(); var params = params + 'command=' + encodeURIComponent(get_command) + '&'; console.log(params); currentpromise = new Promise(function(resolve, reject) { request.open('POST', './php/get_data.php', true); request.setRequestHeader("Content-type", "application/x-www-form-urlencoded"); request.onreadystatechange = function() { if (request.readyState === XMLHttpRequest.DONE) { if (request.status === 200) { var response = JSON.parse(request.response); resolve(response); } else { resolve({error: 'Cant connect!'}); } } }; request.send(params); });} 而不是在我的 main.js 中,我像這樣使用這個函數(shù):var user_id = 'r82h9hfew89hf9983f8d9';var currentpromise;var obj = getdata('SELECT username, email FROM users WHERE id=' + user_id); currentpromise.then(function(obj) { if (obj.data[0] == 'false') { } else { //succesfully go on } }); 但是當我在數(shù)組中使用它時它不會工作。從那開始,我在 var currentpromise 上有多個承諾,或者每次在數(shù)組 forEach 中調(diào)用 getdata 函數(shù)來覆蓋它們。如何解決我的問題以無錯誤地循環(huán)遍歷數(shù)組?ids.forEach(function(id) { var obj = getdata('SELECT name FROM data WHERE id=' + id); currentpromise.then(function(obj) { if (obj.data[0] == 'false') { } else { //succesfully do next step var obj = getdata('SELECT version FROM vers WHERE name=' + obj.data[0]['name']); currentpromise.then(function(obj) { if (obj.data[0] == 'false') { } else { //succesfully finished with one id } }); } }); }); 希望有人可以幫助我。提前致謝。
數(shù)組 forEach 循環(huán)中的承諾
冉冉說
2023-04-14 14:49:42