• Promise


    Promise对象表示异步操作的最终完成(或失败)及其结果值

    var promise1 = new Promise(function(resolve, reject) {
    setTimeout(function() {
    resolve('foo');
    }, 300);
    });

    promise1.then(function(value) {
    console.log(value);
    // expected output: "foo"
    });

    console.log(promise1);
    // expected output: [object Promise]

     语法部分

    new Promise( /* executor */ function(resolve, reject) { ... } );

    执行者与参数resolve和传递的函数reject。该executor函数由Promise实现,传递resolvereject函数立即执行

    (在Promise构造函数甚至返回创建的对象之前调用执行程序)。的resolvereject函数被调用时,解决或拒绝承诺,
    分别。执行程序通常启动一些异步工作,然后,一旦完成,要么调用resolve函数来解析promise ,要么在发生错误
    时拒绝它。如果执行程序函数中抛出错误,则拒绝承诺。执行程序的返回值将被忽略。

    描述部分

    Promise是创建promise时不一定知道的值的代理。它允许您将处理程序与异步操作的最终成功值或失败原因相关联。这允许异步方法返回类似于同步方法的值:异步方法返回一个承诺,在将来的某个时刻提供值,而不是立即返回最终值

    Promise处于以下状态之一:

    • 待定:初始状态,既未履行也未拒绝。
    • 履行:意味着操作成功完成。
    • 拒绝:意味着操作失败。

    待处理的承诺可以使用实现也可以使用原因(错误)拒绝当这些选项中的任何一个发生时,将then调用由promise 方法排队的关联处理程序(如果在附加相应的处理程序时已经履行或拒绝了promise,则将调用该处理程序,因此在异步操作完成和附加处理程序之间没有竞争条件。)

    由于Promise.prototype.then()Promise.prototype.catch()方法返回承诺,它们可以被链接。

    属性部分

    Promise.length
    Length属性,其值始终为1(构造函数参数的数量)。
    Promise.prototype
    表示Promise构造函数的原型

    方法

    Promise.all(iterable)
    返回一个promise,它在iterable参数中的所有promise都已满足时满足,或者在iterable参数中的一个promise中拒绝后立即拒绝。如果返回的promise履行,则使用与iterable中定义的顺序相同的顺序完成承诺中的值的数组来实现。如果返回的promise拒绝,它将被拒绝,其原因来自可拒绝的iterable中的第一个promise。此方法可用于聚合多个承诺的结果。
    Promise.race(iterable)
    返回一个承诺,一旦迭代中的一个承诺履行或拒绝,就会履行或拒绝该承诺,并使用该承诺的价值或理由。
    Promise.reject(reason)
    返回Promise因给定原因而被拒绝对象。
    Promise.resolve(value)
    返回Promise使用给定值解析对象。如果值是一个值得(即有一个then方法),那么返回的promise将“跟随”那个,然后采用它的最终状态; 否则返回的承诺将与值一起实现。通常,如果您不知道某个值是否是一个承诺,Promise.resolve(value)那么它将使用返回值作为承诺。

    承诺原型部分

    属性部分

    Promise.prototype.constructor
    返回创建实例原型的函数。这是Promise默认功能。

    方法

    Promise.prototype.catch(onRejected)
    将拒绝处理程序回调附加到promise,并返回一个新的promise,如果调用它,则解析为回调的返回值,如果相应地履行了promise,则返回其原始的履行值。
    Promise.prototype.then(onFulfilled, onRejected)
    将履行和拒绝处理程序附加到promise,并返回一个新的promise,解析为被调用者的返回值,如果未处理promise(即相关处理程序onFulfilledonRejected 不是函数),则返回其原始的已结算值  
    Promise.prototype.finally(onFinally)
    向promise添加处理程序,并返回在解析原始promise时解析的新promise。当承诺得到解决时,无论是履行还是拒绝,都会调用处理程序。

    创建承诺部分

    Promise对象使用所创建的new 关键字和它的构造。该构造函数将一个函数作为其参数,称为“执行函数”。该函数应该将两个函数作为参数。resolve当异步任务成功完成时,将调用其中第一个函数(),并将任务结果作为值返回。reject任务失败时调用second(),并返回失败原因,通常是错误对象。

    const myFirstPromise = new Promise((resolve, reject) => {
      // do something asynchronous which eventually calls either:
      //
      //   resolve(someValue); // fulfilled
      // or
      //   reject("failure reason"); // rejected
    });

    要提供具有承诺功能的函数,只需让它返回一个承诺:

    function myAsyncFunction(url) {
      return new Promise((resolve, reject) => {
        const xhr = new XMLHttpRequest();
        xhr.open("GET", url);
        xhr.onload = () => resolve(xhr.responseText);
        xhr.onerror = () => reject(xhr.statusText);
        xhr.send();
      });
    }
     
  • 相关阅读:
    CentOS6设置密码过期时间
    scp
    windows查看进程
    mysql5.7密码问题
    mysql主从切换摘要
    mysql慢日志管理
    Linux学习(一)
    Linux学习(一)
    数据结构与算法(1)-算法时间复杂度
    数据结构与算法(1)-算法时间复杂度
  • 原文地址:https://www.cnblogs.com/ggmh/p/10054252.html
Copyright © 2020-2023  润新知