promise联合国戒指 promise promise戒指什么意思( 三 )


语法:
new Promise(function (resolve, reject) {});几种状态:
pending初始状态 , 既不是成功 , 也不是失败状态;fulfilled意味着操作成功完成;rejected意味着操作失败 。
pending状态的Promise对象可能会触发filfilled状态 , 并传递一个值给响应的状态处理方法 , 也可能触发失败状态rejected并传递失败信息 。
Promise.all(iterable)
这个方法返回一个新的promise对象 , 该promise对象在itearable参数中 , 当里面所有的的promise对象决议成功的时候才触发成功 , 否则里面如何一个promise对象决议失败的时候 , 立即触发promise对象的失败 。
Promise.all方法常用于处理多个promise对象的状态集合 。
Promise.race(iterable)
当iterable参数里的任意一个子promise被决议成功或者是决议失败后 , 父promise会用子promise的成功返回值 , 或是失败返回 。
Promise.reject(reason)
返回一个状态为失败的promise对象 , 将给定的失败信息传递给对应的处理方法 。
Promise.resolve(value)
返回一个状态为失败的promise对象 , 将给定的失败信息传递给对应的处理方法 。
const myPromise = new Promise( (resolve, reject) => { resolve(&39;resolve&39;); // filfilled reject(&39;reject&39;); // rejected});function myFunction(url) { return new Promise( (resolve, reject) => { xhr.open (&34;GET&34;, url); xhr.onload = () => resolve(xhr.responseText); xhr.onerror = () => reject(xhr.statusText); xhr.send(); });};当异步代码执行成功的时候 , 会调用resolve() , 当异步代码执行失败的时候 , 会调用reject() 。
模拟异步代码:
setTimeout(function(){ resolve(&39;成功&39;);},250);});myPromise.then(function(successMsg){});ES6 Promise对象Promise对象是异步编程的一种解决方案 , 语法上 , Promise是一个对象 , 从它那可以获取异步操作的信息 。
Promise的状态 , promise异步操作有三种状态 , pending(进行中) , fulfilled(已成功) , reject(已失败) 。除了异步操作的结果 , 任何其他操作都是无法改变这个状态 。
const p1 = new Promise(function(resolve,reject){ resolve(&39;success1&39;); resolve(&39;success2&39;);}); const p2 = new Promise(function(resolve,reject){resolve(&39;success3&39;);reject(&39;reject&39;);});p1.then(function(value){console.log(value); // success1});p2.then(function(value){console.log(value); // success3});缺点 , 一旦建立Promise就会立即执行 , 无法中途取消 , 如果不设置回调函数 , Promise内部会抛出错误 , 不会反应到外部 。
then方法 , 接收两个函数作为参数 。
第一个参数是 Promise 执行成功时的回调 , 第二个参数是 Promise 执行失败时的回调 , 两个函数只会有一个被调用 。
const p = new Promise(function(resolve,reject){ resolve(&39;success&39;);}); p.then(function(value){ console.log(value);}); console.log(&39;first&39;);// first// successconst p = new Promise(function(resolve,reject){ resolve(1);}).then(function(value){ // 第一个then // 1 console.log(value); return value * 2;}).then(function(value){ // 第二个then // 2 console.log(value);}).then(function(value){ // 第三个then // undefined console.log(value); return Promise.resolve(&39;resolve&39;); }).then(function(value){ // 第四个then // resolve console.log(value); return Promise.reject(&39;reject&39;); }).then(function(value){ // 第五个then //reject:reject console.log(&39;resolve:&39; + value);}, function(err) { console.log(&39;reject:&39; + err);});then方法将返回一个resolved或是rejected状态的Promise对象用于链式调用 。
热Promise在JavaScript中 , 所有代码都是单线程的 , 也就是同步执行的 , promise就是为了提供一个解决方案的异步编程 。
promise的特点:只有异步操作可以决定当前处于的状态 , 并且任何其他操作无法改变这个状态;一旦状态改变 , 就不会在变 。
状态改变的过程:从pending变为fulfilled和从pending变为rejected , 状态改变后 , 就不会在改变了 , 这就叫已定型resolved
用法:
Promise对象是由关键字new及其构造函数来创建的 。
const promise = new Promise((resolve, reject) => { // do something here ... if (success) { resolve(value); // fulfilled } else { reject(error); // rejected }}); 函数接收两个函数作为参数 , 分别是resolve和reject , 当异步操作执行成功后 , 会将异步操作的结果作为参数传入resolve函数并执行 , 此时的状态由Promise状态从pending变为fulfilled;而失败会将异步操作的错误作为参数传入reject函数并执行 , 此时Promise对象状态从pending变为rejected 。