zoukankan      html  css  js  c++  java
  • Promise

    Promise定义

    古人云:“君子一诺千金”,这种“承诺将来会执行”的对象在JavaScript中称为Promise对象。

    Promise是JS异步编程中的重要概念,异步抽象处理对象,是目前比较流行Javascript异步编程解决方案之一
    Axios 是一个基于 promise 的 HTTP 库,可以用在浏览器和 node.js 中。

    常见异步编程方案

    1. 回调函数
    2. 事件监听
    3. 发布/订阅
    4. Promise对象

    代码示列

    new Promise(test).then(function (result) {
        console.log('成功:' + result);
    }).catch(function (reason) {
        console.log('失败:' + reason);
    });
    

    Promise对象三种状态

    • 未完成(pending)
    • 已完成(fulfilled)
    • 失败(rejected)

    PromiseA与A+不同规范

    • A+规范通过术语thenable来区分promise对象
    • A+定义onFulfilled/onRejected必须是作为函数来调用,而且调用过程必须是异步的。
    • A+严格定义了 then 方法链式调用时onFulfilled/onRejected的调用顺序

    Promise的then方法

    promiseObj.then(onFulfilled, onRejected)
    onFulfilled = function(value){
        return promiseObj2
    }
    onRejected = function(value){
        return promiseObj2
    }
    

    Promise库

    • bluebird (扩展了很多实用的方法)
    • Q
    • then.js
    • es6-promise
    • ypromise
    • async
    • native-promise-only
    • ......

    Promise.all 接收一个promise对象数组为参数

    只有全部为resolve才会调用 通常会用来处理 多个并行异步操作

    const p1 = new Promise((resolve, reject) => {
        resolve(1111);
    });
    
    const p2 = new Promise((resolve, reject) => {
        resolve(2222);
    });
    
    const p3 = new Promise((resolve, reject) => {
        reject(3333);
    });
    
    Promise.all([p1, p2, p3]).then(data => { 
        console.log(data); // [1, 2, 3]       //结果顺序和promise实例数组顺序是一致的
    }, error => {
        console.log(error);
    });
    
  • 相关阅读:
    mybatis四大接口之 ParameterHandler
    mybatis四大接口之 Executor
    网络协议
    4、Android UI测试
    3、Android构建仪表测试
    【翻译】Ext JS 6.2 早期访问版本发布
    2、Android构建本地单元测试
    1、Android测试入门
    安卓中的事件分发机制源码解析
    安卓IPC机制之Binder详解
  • 原文地址:https://www.cnblogs.com/chengmingxiaowu/p/10106572.html
Copyright © 2011-2022 走看看