Яка різниця між:
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");
цього, він спрацює і попередить "ха-ха". Чи не витяг (). Тоді () вже завершив "ха-ха" в рішучу обіцянку?
Promise.resolve()
другому прикладі непотрібно.