В чем разница между:
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
обработчика нет ничего плохого , на самом деле, это ключевой аспект спецификации обещаний, что вы можете это сделать.
then
s - термин «другие языки» для этого - это 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()
втором примере нет необходимости.