Promise的问题解答:典型的demo
promise经典demo
Promise的问题解答:典型的demo
promise经典demo
更多promise的使用方案还是查阅MDN为准promise in MDN
这里主要展示一个DEMO:
// 0.5秒后返回input*input的计算结果: function multiply(input) { return new Promise(function (resolve, reject) { console.log('calculating ' + input + ' x ' + input + '...'); setTimeout(resolve, 500, input * input); }); } // 0.5秒后返回input+input的计算结果: function add(input) { return new Promise(function (resolve, reject) { console.log('calculating ' + input + ' + ' + input + '...'); setTimeout(resolve, 500, input + input); }); } var p = new Promise(function (resolve, reject) { console.log('start new Promise...'); resolve(123); }); p.then(multiply) .then(add) .then(multiply) .then(add) .then(function (result) { log('Got value: ' + result); });
最后的结果如下:
start new Promise...
calculating 123 x 123...
calculating 15129 + 15129...
calculating 30258 x 30258...
calculating 915546564 + 915546564...
Got value: 1831093128
其实最主要的还是有关宏任务和微任务的具体使用场景,经常在各种业务逻辑中和面试中遇到
setTimeout( () => { new Promise(resolve => { resolve() console.log(4) }).then(() => { console.log(7) }) }) new Promise(resolve => { resolve() console.log(1) }).then( () => { console.log(3) }) setTimeout( () => { Promise.resolve(6).then(() => console.log(6)) new Promise(resolve => { resolve() console.log(8) }).then(() => { console.log(9) }) }) Promise.resolve(5).then(() => console.log(5)) console.log(2)
执行结果是什么呢?
1,2,3,5,4,7,8,6,9
为什么这样呢?我之前的博文中分析过这个流程,这里不再赘述,主要讲的就是要知道event loop的机制
以上便运行机制,可以站内搜索promise
查看如何用原生实现promise的机制和方法
跟多相关博文请关注promise腾讯云篇
您的鼓励是我前进的动力---
使用微信扫描二维码完成支付