本文共 1509 字,大约阅读时间需要 5 分钟。
promise
可以解决异步的问题,本身不能说promise
是异步的创造Promise实例时,必须传入一个函数作为参数
new Promise(() => { });new Promise(); // 报错
该函数可以接收另外两个由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
Promise
对象代表一个异步操作,有三种状态:pending
(进行中)、resolved
(已成功)和 rejected
(已失败)Promise
对象的状态改变,只有两种可能:从 pending
变为 resolved
和从 pending
变为 rejected
转载地址:http://hnozi.baihongyu.com/