• npm-bluebird使用


    注意

    • 时刻注意return;
    • 使用Promise.promisify简化对test(val, function(err, result){})的处理;
    • 尽量避免使用 deferred object;

    .spread

    • 用于简化处理返回值是数组的情况;
    • es6取代其处理返回数组的时候注意添加.all();

    .catch()

    • 允许传入错误类型(error constructor)来区别错误判断,包括:
      • TypeError,
      • ReferenceError,
      • EvalError,
      • SyntaxError,
      • RangeError,
      • NetworkError,
      • TimeoutError
    • 也可以自己设置特别的错误类型,并且可以详细错误类型的信息;
    • 可以传入一个返回布尔值的函数进行过滤;
    • 传入一个对象简化判断;

    .error

    • 如果把错误分成Operational errorsprogrammer errors,则可以用error方法来处理前者;这些错误包括:
      * failed to connect to server
      * failed to resolve hostname
      * invalid user input
      * request timeout
      * server returned a 500 response
      * socket hang-up
      * system is out of memory

    .finally

    • fulfilled状态后触发;并与之后的.then方法同时被触发;
    • fulfilled状态触发后不会返回值到这个方法;同时其返回的方法也不会传递到下一个.then方法;

    Promise.try

    • 传入函数,没有错误则其返回值为fulfilled状态,有错误则返回rejected状态的错误;

    Promise.method

    • 处理机制与Promise.try类似,都传入函数;但其返回的是一个会返回promise对象的方法;

    Promise.resolve

    • 将传入的数据转化为promise对象返回,除了原本是promise对象且是rejected状态的都会变成fulfilled状态;

    Promise.reject

    • 将传入的数据转化为promise对象返回,状态都为rejected;

    Promise.bind/.bind

    • 传入一个值,给后续的链式操作中绑定一个this为这个值;如果传入this,则绑定的是.bind()方法之前返回的值;

    Collections

    Promise.all

    • 传入数组,当全部值为fulfilled状态时以数组形式传递返回值;
    • 当有一个值状态为rejected时将改值传递到错误处理;其他值不传递;

    Promise.join

    • 参数为一般参数加处理函数;处理函数相当于一个.then方法;
    Promise.join(val1, val2, val3, function (val1, val2, val3) {}).then...
    
    • 处理机制与Promise.all类似;

    Promise.props

    • 处理机制与Promise.all类似,接受对象处理;

    Promise.any

    • 接受数组,会返回第一个达到fulfilled状态的值;如果是空数组或都为rejected状态,则全部返回错误处理;
    • 注意实际的运行时间是包括全部值的判断的;

    Promise.some

    • 第一参数为接受数组,第二参数为判断的个数; 设置个数必须,且不能大于数字个数,可以为0;
    • 处理机制与Promise.all类似;返回最先到达设置个数的fulfilled状态的值;
    • 如果参数中fulfilled状态的值达不到设定个数,返回rejected状态的值到错误处理函数;

    Promise.map

    • 第一参数为接受数组,第二参数为判断函数;

    Promise.reduce, Promise.filter, Promise.each

    • 同上

    .map

    • 第一参数为判断函数;第二参数为设置并发数: {concurrency: Infinity};设置并行个数能加快处理但不能保证返回顺序;
    • 注意传递过来的必须是数组;

    .reduce, .filter, .each

    • 同上

    Promise.mapSeries/.mapSeries

    • Promise.map类似;区别在于没有并发设置参数,如果其中一个为rejected状态,则之后的值便不再处理;

    Promise.race

    • 接受数组,返回第一个达到fulfilled状态的值;

    Resource management

    Promise.using

    • 接受多个参数,最后一个为处理前面参数的函数,在前面参数都为fulfilled状态时才会处理;

    Promisification

    Promise.promisify

    Promise.promisifyAll

  • 相关阅读:
    mysql 安装
    flying-saucer-pdf使用中字符串过长换行出问题的解决办法
    杂想
    关于MATLAB实验结果求交点问题
    关于学习方向问题
    关于读取文件夹中的图片问题
    关于ROC曲线的碎碎念
    win7(64)+vs2013+opencv3.0配置的辛酸路程
    验证模式和辨识模式
    指纹识别认证
  • 原文地址:https://www.cnblogs.com/jinkspeng/p/5090329.html
Copyright © 2020-2023  润新知