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);
});

posted on   诚明小巫  阅读(139)  评论(0编辑  收藏  举报

编辑推荐:
· 智能桌面机器人:用.NET IoT库控制舵机并多方法播放表情
· Linux glibc自带哈希表的用例及性能测试
· 深入理解 Mybatis 分库分表执行原理
· 如何打造一个高并发系统?
· .NET Core GC压缩(compact_phase)底层原理浅谈
阅读排行:
· 手把手教你在本地部署DeepSeek R1,搭建web-ui ,建议收藏!
· 新年开篇:在本地部署DeepSeek大模型实现联网增强的AI应用
· 程序员常用高效实用工具推荐,办公效率提升利器!
· Janus Pro:DeepSeek 开源革新,多模态 AI 的未来
· 【译】WinForms:分析一下(我用 Visual Basic 写的)
< 2025年1月 >
29 30 31 1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31 1
2 3 4 5 6 7 8

导航

统计

点击右上角即可分享
微信分享提示