В чем разница между:
new Promise(function(res, rej) {
res("aaa");
})
.then(function(result) {
return "bbb";
})
.then(function(result) {
console.log(result);
});
и это:
new Promise(function(res, rej) {
res("aaa");
})
.then(function(result) {
return Promise.resolve("bbb");
})
.then(function(result) {
console.log(result);
});
Я спрашиваю, как я получаю другое поведение, используя Angular и $ http сервис с цепочкой .then (). Слишком много кода, поэтому сначала пример выше.
thenобработчика нет ничего плохого , на самом деле, это ключевой аспект спецификации обещаний, что вы можете это сделать.
thens - термин «другие языки» для этого - это thenи a, mapи a flatMap.
new Promise((res, rej) => { return fetch('//google.com').then(() => { return "haha"; }) }).then((result) => alert(result));этот код будет зависать (не разрешаться вечно). Но если я перейду return "haha";на return res("haha");то, это сработает и предупредит "ха-ха". Разве fetch (). Then () уже обернуло "хаха" в решенное обещание?
Promise.resolve()втором примере нет необходимости.