Javascript中Promise的简单使用

 1      // 函数功能:1秒以后创建一个10以内的随机整数,并判断这个数是否为偶数;如果是偶数则做一件事情,如果是奇数则做另一件事情
 2         function doSomthing() {
 3             var promise = new Promise(function (resolve, reject) {
 4                 setTimeout(function () {
 5                     const num = Math.round(Math.random() * 10);
 6                     if (num % 2 === 0) {
 7                         resolve(num);
 8                     } else {
 9                         reject(num);
10                     }
11                 }, 1000);
12             });
13             return promise;
14         }
 1      // 调用方法,得到Promise对象,并在Promise中的事情执行完成之前,预先指定成功和失败的回调函数
 2         // 成功和失败的回调函数,分别对应new这个Promise对象时,传递的匿名function中的resolve和reject这两个形参
 3         doSomthing().then(function (val) {
 4             console.log('第一次偶数:' + val);
 5             return doSomthing(); // 当事情处理完毕之后,可以return一个新的Promise对象,并继续使用.then指定下一次的回调函数
 6         }, function (val) {
 7             console.log('第一次奇数:' + val);
 8             return doSomthing();
 9         }).then(function (val) {
10             console.log('第二次偶数:' + val);
11             return doSomthing();
12         }, function (val) {
13             console.log('第二次奇数:' + val);
14             return doSomthing();
15         }).then(function (val) {
16             console.log('第三次偶数:' + val);
17         }, function (val) {
18             console.log('第三次奇数:' + val);
19         });
Promise总结:
  1. Promise表示要做一件事,要做的事情,需要在new Promise对象的时候指定
  2. 一旦这个Promise对象new出来之后,则立即就会去做这个Promise对象中指定的事情(所以如果不想立即做这件事,可以将new Promise对象的过程放在一个方法中)
  3. 做任何事情都有一个过程,所以在这个Promise中的事情做完之前,我们不知道这件事最终执行的结果是成功还是失败,
  4. 但我们可以肯定的是,这个事情做完之后,肯定有一个执行的结果,要么这件事做成功了,要么这件事做失败了,且会将这个执行结果进行相关操作;
  5. 所以,我们可以提前为这个Promise对象,通过resolve方法指定成功之后的处理函数,通过reject方法指定失败之后的处理函数
  6. 那么,如何提前指定resolve和reject这两个处理函数呢?可以在Promise对象身上,调用.then(成功回调函数,失败回调函数)方法预先指定成功和失败的处理函数!
  7. 这样,当Promise对象中的事情做完之后,就会调用预定义的成功或失败处理函数
  8. 在成功和失败的处理函数内部,又可以创建一个新的Promise对象,来执行下一件事情,并通过下一个.then预先指定成功和失败的回调函数!
posted @ 2017-04-19 00:09  刘龙彬  阅读(636)  评论(0编辑  收藏  举报