最近看头儿的代码里很多这种异步调用,所以学习一下
运行一个小demo,直接在谷歌控制台运行的:
一、一个demo
new Promise(function (resolve, reject) {
console.log('(1)start new Promise...');
var timeOut = Math.random() * 2;
console.log('(2)set timeout to: ' + timeOut + ' seconds.');
setTimeout(function () {
if (timeOut < 1) {
console.log('(3)call resolve()...');
resolve('(4)200 OK');
}
else {
console.log('(5)call reject()...');
reject('(6)timeout in ' + timeOut + ' seconds.');
}
}, timeOut * 1000);
}).then(function (r) {
console.log('(7)Done: ' + r);
}).catch(function (reason) {
console.log('(8)Failed: ' + reason);
});
- promise对象内报了错,运行catch()

- 调用了resolve(),运行then().

- 调用了reject(),运行catch().

结论:
promise对象调用了resolve()就执行then();调用了reject()或者promise内报了错就执行catch()。
本文通过一个异步调用的示例,详细解析了Promise对象的工作原理。包括如何使用resolve和reject来控制流程,以及then和catch方法的执行时机。同时,文章提供了运行在谷歌控制台的小demo代码,便于读者理解和实践。
2191

被折叠的 条评论
为什么被折叠?



