我有一个这样的数组:
var ids = [8372839402, 8392615782, 3677281302];
插入的是 id 值。基于这个 ID,我必须从数据库中为每个 ID 获取一些信息。基本上我通过使用位于 db.js 中的以下函数获取数据:
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 中,我像这样使用这个函数:
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
}
});
但是当我在数组中使用它时它不会工作。从那开始,我在 var currentpromise 上有多个承诺,或者每次在数组 forEach 中调用 getdata 函数来覆盖它们。
如何解决我的问题以无错误地循环遍历数组?
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
}
});
}
});
});
希望有人可以帮助我。提前致谢。
绝地无双
相关分类