• 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预先指定成功和失败的回调函数!
  • 相关阅读:
    HDU 1556 差分,前缀和
    Full permutation
    PAT B1029
    字串简介
    阵列(3)
    完形填空
    关于c的比较
    19 阵列的复制
    switch述句
    阵列变数(2)
  • 原文地址:https://www.cnblogs.com/liulongbinblogs/p/6731288.html
Copyright © 2020-2023  润新知