编程学习入门网站,十堰门户网站建设,网站开发官网源码,网页加速器推荐Promise 概述Promise 是异步编程的一种解决方案#xff0c;从语法上讲#xff0c;Promise 是一个对象#xff0c;从它可以获取异步操作的消息。优点#xff1a;可以避免多层异步调用嵌套问题(回调地狱)Promise 对象提供了简洁的 API#xff0c;使得控制异步操作更加容易Pr…Promise 概述Promise 是异步编程的一种解决方案从语法上讲Promise 是一个对象从它可以获取异步操作的消息。优点可以避免多层异步调用嵌套问题(回调地狱)Promise 对象提供了简洁的 API使得控制异步操作更加容易Promise基本用法实例化 Promise 对象构造函数中传递函数该函数中用于处理异步任务resolve 和 reject 两个参数用于处理成功和失败两种情况并通过 p.then 获取处理结果var p new Promise(function(resolve,reject){//实现异步任务...//成功时调用resolve();//失败时调用reject();});p.then(function(ret){//从resolve得到正常结果},function(ret){//从reject得到错误信息});基于 Promise 处理 Ajax 请求处理原生 Ajaxfunction queryData(url){return new Promise(function(resolve,reject){var xhr new XMLHttpRequest();xhr.onreadystatechange function(){if(xhr.readyState!4) return;if(xhr.status 200){resolve(xhr.responseText);}else{reject(出错了);}}xhr.open(get,url);xhr.send(null);});}//调用queryData(http://localhost:3000/data).then(function (data) {console.log(data);},function (data) {console.log(data);})发送多次 ajax 请求(解决回调地狱)queryData(http://localhost:3000/data).then(function (data) {console.log(data);//异常情况可以不处理return queryData(http://localhost:3000/data1);}).then(function (data1) {console.log(data1);return queryData(http://localhost:3000/data2);}).then(function (data2) {console.log(data2);});then参数中的函数返回值返回 Promise 实例对象返回的该实例对象会调用下一个 then返回普通值返回的普通值会直接传递给下一个 then通过 then 参数中函数的参数接收该值Promise常用的API1.实例方法* p.then()得到异步任务的正确结果* p.catch()获取异常信息* p.finally()成功与否都会执行(暂时还不是正式标准)foo().then(function (data) {console.log(data);}).catch(function (data) {console.log(data);}).finally(function () {console.log(finish);})也可以写为:foo().then(function (data) {console.log(data);},function (data) {console.log(data);}).finally(function () {console.log(finish);})2.对象方法Promise.all() 并发处理多个异步任务所有任务都执行完成才能得到结果//p1,p2,p3为Promise实例对象任务Promise.all([p1,p2,p3]).then((result){console.log(result);})Promise.race()并发处理多个异步任务只要有一个任务完成就能得到结果Promise.race([p1,p2,p3]).then((result){console.log(result);})