function takelongtime(n) {
return new Promise(resolve => {
setTimeout(() => resolve(n + 200), n)
})
}
function step1(n) {
console.log(`step1 with ${n}`)
return takelongtime(n)
}
function step2(m, n) {
console.log(`step2 with ${m} and ${n}`)
return takelongtime(m + n)
}
function step3(k, m, n) {
console.log(`step3 with ${k} and ${m} and ${n}`)
return takelongtime(k + m + n)
}
async function doIt() {
console.time("doIt")
var p1 = 300,
p2, p3;
step1(p1)
.then((param) => step2(p1, p2 = param))
.then((param) => step3(p1, p2, p3 = param))
.then((param) => {
console.log("result is", param);
console.timeEnd("doIt")
})
}
doIt();
console