博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
ECMAScript 6 之 Promise 命令
阅读量:3934 次
发布时间:2019-05-23

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

Promise含义

简单说就是一个容器,里面保存着某个未来才会结束的事件(通常是一个异步操作)的结果。从语法上说,Promise 是一个对象,从它可以获取异步操作的消息。Promise 提供统一的 API,各种异步操作都可以用同样的方法进行处理。

Promise对象有三个状态:准备状态(pending)、成功状态(resolve)、失败状态(reject)。

用途:

可以将异步操作以同步操作的流程表达出来,避免了层层嵌套的回调函数。

 


 

  • 实例化
const p = new Promise(function(resolve, reject)=>{  // 代码段  if (/* 异步操作成功 */){    resolve(value);  } else {    reject(error);  }});

Promise构造函数接受一个函数作为参数,该函数的两个参数分别是resolvereject

  • 调用
p.then((data)=>{     //该调用函数在p执行resolve后执行,并且data为resolve传递的参数,该方法返回当前promise对象 }).catch((error)=>{     //该调用函数在p执行reject后执行,并且error为reject传递的参数,该方法返回当前promise对象 });

案例如下:

function timeout(ms) {  return new Promise((resolve, reject) => {    setTimeout(resolve, ms, '执行成功');  });}timeout(2000).then((value) => {  console.log(value);});

上面代码中,timeout方法返回一个Promise实例,表示一段时间(2s)以后才会发生的结果。过了指定的时间(ms参数)以后,Promise实例的状态变为resolved,就会触发then方法绑定的回调函数。

Promise新建后就会立即执行:

let p = new Promise(function(resolve, reject) {  console.log('Promise');  resolve();});p.then(function() {  console.log('resolved');});console.log('Hi!');// Promise// Hi!// resolved

上面代码中,Promise 新建后立即执行,所以首先输出的是Promise。then方法指定的回调函数,将在当前脚本所有同步任务执行完才会执行,所以resolved最后输出。

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

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

你可能感兴趣的文章
学术英语 | (6) WordList6
查看>>
线性代数 | (5) 线性方程组
查看>>
学术英文 | (7) Unit3Words
查看>>
线性代数 | (6) 相似对角形
查看>>
学术英语 | (8) WordList7
查看>>
概率论与数理统计 | (1) 概率论初步Part One
查看>>
概率论与数理统计 | (2) 概率论初步Part Two
查看>>
概率论与数理统计 | (3) 随机变量
查看>>
学术英语 | (9) WordList8
查看>>
概率论与数理统计 | (4) 二元随机变量Part One
查看>>
学术英语 | (10) WordList9
查看>>
李航机器学习 | (2) 统计学习方法(第2版)笔记 --- 感知机
查看>>
动手学PyTorch | (33) 通过时间反向传播
查看>>
动手学PyTorch | (35) 长短期记忆(LSTM)
查看>>
动手学PyTorch | (37) 优化与深度学习
查看>>
动手学PyTorch | (39) 小批量随机梯度下降
查看>>
动手学PyTorch | (41) Adagrad算法
查看>>
动手学PyTorch | (44) Adam算法
查看>>
动手学PyTorch | (59) 微调(fine-tuning)
查看>>
吴恩达深度学习 | (16) 卷积神经网络专项课程第一周学习笔记
查看>>