Я работаю над ожиданием функции, которая возвращает обещание внутри al oop. Но я не смог ее решить.
l oop равно
for (var i = 0; i < rows.length; i++) {
console.log("row " + i);
getData(i).then(function (data) {
console.log("data of row "+ i +" is "+ data);
});
}
Вывод:
row 0
row 1
row 2
data of row undefined data
data of row undefined data
data of row undefined data
Я пытался поставить l oop в Async Context
и ожидают для функции getData
, но она вызывает deadlock
с ошибкой Uncaught (in promise) undefined
при row 0
, как показано ниже:
getRows().then(async function (rows) {
for (var i = 0; i < rows.length; i++) {
console.log("row " + i);
await getData(i).then(function (data) {
console.log("data of row "+ i +" is "+ data);
});
}
});
Стоит скажем, я определил promise reject function
так: reject(undefined)
но я пробовал reject(false)
и reject(null)
также. Тем не менее, нет разницы и Uncaught (in promise)
исключений и deadlock
.
function getData(row) {
var promise = new Promise(function (resolve, reject) {
whenAvailable("read", function (t) {
read("data", row, 0, 1, true, "so").then(function (data) {
if (data != undefined) {
resolve(data);
} else {
reject(false);
}
});
});
});
return promise;
}
, а также я проверяю другие stackoverflow связанные вопросы, но они не подходят для моей проблемы.
Можете ли вы помочь мне преодолеть эту проблему?
Обновить
Я сделал ниже, как @ SunilLama сказал
getRows().then(async function (rows) {
if (rows != undefined) {
for (var i = 0; i < rows.length; i++) {
console.log("rows " + i);
await getData(i).then(function (data) {
console.log(data);
}, error => console.log(error));
}
}
снова deadlock
за исключением
![enter image description here](https://i.stack.imgur.com/PrOCz.png)