У меня есть несколько сценариев ios, где в зависимости от условия мне необходимо выполнить асинхронную обработку, а затем продолжить работу независимо от выбранного пути. Этот код работает так, как я ожидаю:
let processingComplete = new Promise(function (resolve, reject) { }); // create pending promise
let condition = true;
var wait = function () {
return new Promise((resolve, reject) => {
setTimeout(resolve, 500);
});
}
if (condition) {
processingComplete = wait();
} else {
// do something else, synchronously
processingComplete = Promise.resolve();
}
processingComplete.then(() => {
console.log("entering processingComplete.then...")
});
Однако, если обещания вложены более чем в одну глубину, предложение .then никогда не срабатывает. Например,
let processingComplete = new Promise(function (resolve, reject) { }); // create pending promise
let condition = true;
var wait = function () {
return new Promise((resolve, reject) => {
setTimeout(resolve, 500);
});
}
if (condition) {
wait()
.then(() => {
processingComplete = wait() // nesting of promises
})
} else {
// do something else, synchronously
processingComplete = Promise.resolve();
}
processingComplete.then(() => {
// this code never fires with nested promises
console.log("entering processingComplete.then...")
});
Я, конечно, знаком с использованием обещаний, но я не понимаю, почему это не работает. Я бы приветствовал любые идеи.