博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Promise
阅读量:3958 次
发布时间:2019-05-24

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

pomise 是什么

  • 异步编程 的一种解决方案,比传统的方案(回调函数和事件)更加的合理和强大
  • 好处 异步操作以同步操作的流程表达出来,避免了层层嵌套的回调函数
  • promise可以解决异步的问题,本身不能说promise是异步的

pomise 使用

创造Promise实例时,必须传入一个函数作为参数

new Promise(() => {
});new Promise(); // 报错

pomise 参数函数解析

该函数可以接收另外两个由JavaScript引擎提供的函数,resolve和reject。

函数作用

  • resolve——将Promise对象的状态从pending变为resolved,将异步操作的结果,作为参数传递出去
  • reject——将Promise对象的状态从pending变为rejected,将异步操作报出的错误,作为参数传递出去
let promise = new Promise((resolve, reject) => {
// do something if (true) {
// 将参数返回,供then方法使用 resolve("value"); } else {
// 将参数返回,供then方法使用 reject("error"); }});

Promise实例生成以后,可以用then方法分别指定resolved状态和rejected状态的回调函数。

promise.then(  value => {
// resolved时调用,value为resolve函数返回的参数 console.log(value); }, err => {
// rejected时调用,err为reject函数返回的参数 console.log(err); });

当then方法只有一个函数参数时,此时为resolved状态的回调方法

promise.then(value => {
// 只有状态为resolved时才能调用,如果返回的是rejected状态,则报错 Uncaught (in promise) error console.log(value); });

只有当promise的状态变为resolved或者rejected时,then方法才会被调用

Promise 新建后就会立即执行,并且调用resolve或reject后不会终结 Promise的参数函数的执行。

let promise = new Promise(function(resolve) {
console.log("Promise"); resolve(); console.log("!!!")});promise.then(function() {
console.log("resolved.");});console.log("Hi!");// Promise// !!!// Hi!// resolved

pomise 特点(三种状态)

  • 对象的状态不受外界影响。Promise对象代表一个异步操作,有三种状态:pending(进行中)、resolved(已成功)和 rejected(已失败)
  • 一旦状态改变,就不会再变,任何时候都可以得到这个结果。Promise对象的状态改变,只有两种可能:从 pending变为 resolved 和从 pending变为 rejected
  • `promise内部发生错误,不会影响到外部程序的执行。

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

你可能感兴趣的文章
Android 下 JNI 开发
查看>>
Android 下 JNI 开发
查看>>
Android 下 JNI 开发
查看>>
Android 下 JNI 开发
查看>>
Android 下 JNI 开发
查看>>
Android 下 JNI 开发
查看>>
Android 下 JNI 开发
查看>>
Android 下 JNI 开发
查看>>
Android 下 JNI 开发
查看>>
Android 下 JNI 开发
查看>>
Mysql索引
查看>>
OGNL投影查询
查看>>
OGNL投影查询
查看>>
OGNL投影查询
查看>>
Redis之RDB和AOF持久化
查看>>
Redis之RDB和AOF持久化
查看>>
Servlet3.0
查看>>
Servlet3.0
查看>>
Servlet3.0
查看>>
SQL 语句的解析过程
查看>>