传统回调函数
// demo1-callback.js
/**
如今我们要做个事变,写个回调函数,每秒输出一个递增的数字,输出三次
一般回调函数的写法
*/
function logNumber(n, callback){
setTimeout(() => {
console.log(n);
n++;
callback(n)
}, 1000);
}
// 如今挪用它
logNumber(1, function(n){
logNumber(n, function(m){
logNumber(m, function(q){
})
})
})
Promise
// demo2-promise.js
/**
如今我们改用promise来重写demo1的函数
*/
// 我们在这里暴露谁人promise以供demo3挪用
function generatorLogNumber(n){
return new Promise(res => {
setTimeout(() => {
console.log(n);
n++;
res(n)
}, 1000);
})
}
// 如今运用它
generatorLogNumber(1)
.then(n => {
generatorLogNumber(n)
.then(m => {
generatorLogNumber(m)
.then(q => {
})
})
})
// 这里把这个promise暴露出去以供demo3运用,记得把本demo的挪用函数解释掉(就是15-24行解释掉)
module.exports = generatorLogNumber;
async/await
// demo3-async-await.js
/**
如今我们改用越发轻易的async/await体式格局来挪用demo2的promise
*/
// 首先把谁人promise引入进来
const generatorLogNumber = require('./demo2-promise.js');
(async () => {//双括号示意马上实行的匿名函数
const n = await generatorLogNumber(1);
const m = await generatorLogNumber(n);
const q = await generatorLogNumber(m);
})()
// 能够node demo3-async-await.js 来运转看看