2023-10-05 16:37:07 +02:00
|
|
|
// https://javascript.info/promise-chaining
|
|
|
|
|
|
|
|
// .then() returns a new Promise when you do "return",
|
|
|
|
// internally calling resolve().
|
|
|
|
|
2023-10-05 17:12:10 +02:00
|
|
|
new Promise(function(resolve, reject) {
|
2023-10-05 16:37:07 +02:00
|
|
|
|
2023-10-05 17:12:10 +02:00
|
|
|
setTimeout(() => resolve(1), 1);
|
2023-10-05 16:37:07 +02:00
|
|
|
|
2023-10-05 17:12:10 +02:00
|
|
|
}).then(function(result) {
|
2023-10-05 16:37:07 +02:00
|
|
|
|
2023-10-05 17:12:10 +02:00
|
|
|
console.log(result);
|
|
|
|
return result * 2;
|
2023-10-05 16:37:07 +02:00
|
|
|
|
2023-10-05 17:12:10 +02:00
|
|
|
}).then(function(result) {
|
2023-10-05 16:37:07 +02:00
|
|
|
|
2023-10-05 17:12:10 +02:00
|
|
|
console.log(result);
|
|
|
|
return result * 2;
|
2023-10-05 16:37:07 +02:00
|
|
|
|
2023-10-05 17:12:10 +02:00
|
|
|
}).then(function(result) {
|
2023-10-05 16:37:07 +02:00
|
|
|
|
2023-10-05 17:12:10 +02:00
|
|
|
console.log(result);
|
|
|
|
return result * 2;
|
2023-10-05 16:37:07 +02:00
|
|
|
|
2023-10-05 17:12:10 +02:00
|
|
|
});
|
2023-10-05 16:37:07 +02:00
|
|
|
|
|
|
|
/*
|
|
|
|
It will print
|
|
|
|
1
|
|
|
|
2
|
|
|
|
4
|
|
|
|
*/
|
|
|
|
|
|
|
|
/*
|
|
|
|
It means that "then" is internally implemented roughly as follows:
|
|
|
|
|
|
|
|
function then(f){
|
|
|
|
return new Promise(function(resolve, reject) {
|
|
|
|
resolve(f());
|
|
|
|
})
|
|
|
|
}
|
|
|
|
*/
|
|
|
|
|
|
|
|
// Another example:
|
|
|
|
|
|
|
|
fetch('http://www.fsf.org')
|
|
|
|
// .then below runs when the remote server responds
|
|
|
|
.then(function(response) {
|
|
|
|
// response.text() returns a new promise that resolves with the full response text
|
|
|
|
// when it loads
|
|
|
|
return response.text();
|
|
|
|
})
|
|
|
|
.then(function(text) {
|
|
|
|
// ...and here's the content of the remote file
|
|
|
|
console.log(text);
|
|
|
|
});
|