blink/tutorials/2_promise_chaining.js

56 lines
1.1 KiB
JavaScript
Raw Normal View History

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);
});