博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
认识并使用 Promise
阅读量:5893 次
发布时间:2019-06-19

本文共 1375 字,大约阅读时间需要 4 分钟。

一、了解 Promise:

Promise 是一个异步操作返回的对象,用来传递异步操作的消息。

可以解决的问题:

  1. 解决了回调地狱问题,不会导致难以维护;
  2. 合并多个异步请求,节约时间。

Promise 有三种状态:

  1. Pending Promise 对象实例创建时的初始态;
  2. Fulfilled 成功时的状态;
  3. Rejected 失败时的状态。

二、使用 Promise:

Promise.then():用来指定 Promise 对象的状态改变时要执行的操作。

let promise = new Promise(function (resolve, reject) {    resolve('成功');    //reject('失败');})promise.then(function (data) {    console.log('data: ', data);},function (err) {    console.log('err: ', err);})复制代码

Promise.all():接收一个数组,数组内是 Promise 实例,必须都成功呢才表示成功。

Promise.race():接收一个数组,数组内是 Promise 实例,最早返回的对象成功了,就变为成功态,如果失败了,就改变状态为失败态。

let fs = require('fs');function read(url){    return new Promise(function(resolve, reject){        fs.readFile(url,'utf8',function(err, data){            if(err) reject( err);            resolve( data);        })    })}Promise.all([read('1.txt'), read('2.txt')]).then(function (data) {    console.log(data);},function (err) {    console.log('err: ', err);})Promise.race([read('1.txt'), read('2.txt')]).then(function (data) {    console.log(data);},function (err) {    console.log('err: ', err);})复制代码

Promise.resolve():返回一个 Promise 实例,这个 Promise 实例处于 resolve 状态。

Promise.resolve([1,2,3]).then(function(data){    console.log(data);});复制代码

输出:[ 1, 2, 3 ]

Promise.reject():返回一个 Promise 实例,这个 Promise 实例处于 reject 状态。

Promise.reject([1,2,3]).then(null,function(err){    console.log('err',err)});复制代码

输出:err [ 1, 2, 3 ]

转载地址:http://lsisx.baihongyu.com/

你可能感兴趣的文章
System.Func<>与System.Action<>
查看>>
asp.net开源CMS推荐
查看>>
csharp skype send message in winform
查看>>
MMORPG 游戏服务器端设计--转载
查看>>
《星辰傀儡线》人物续:“灭世者”、“疯狂者”、“叛逆者”三兄妹
查看>>
安装系统字体
查看>>
SILK 的 Tilt的意思
查看>>
Html学习笔记3
查看>>
批处理学习笔记8 - 深入学习For命令1
查看>>
微信支付开发(11) Native支付
查看>>
HDFS dfsclient写文件过程 源码分析
查看>>
关于多线程的那些事
查看>>
JavaScript获取DOM元素位置和尺寸大小
查看>>
EL 表达式小结
查看>>
内部排序
查看>>
jQuery EasyUI API 中文文档 - 组合(Combo)
查看>>
10个关于 Dropbox 的另类功用(知乎问答精编)[还是转来了]
查看>>
Oracle体系结构
查看>>
用Modelsim仿真QII FFT IP核的时候出现的Error: Illegal target for defparam
查看>>
javascript Error对象详解
查看>>