三明网站开发,wordpress手机不方便,汕头网站建设详细内容,小米路由做网站promise可以解决多个回调函数嵌套问题#xff0c;将嵌套所表示的流程通过同步的代码更加清晰的表达出来。
promise的用法与使用配置文件很类似#xff1a;启动异步函数#xff0c;在then里面配置好异步函数成功或执行失败的回调函数#xff0c;然后就可以去干别的事了。
…promise可以解决多个回调函数嵌套问题将嵌套所表示的流程通过同步的代码更加清晰的表达出来。
promise的用法与使用配置文件很类似启动异步函数在then里面配置好异步函数成功或执行失败的回调函数然后就可以去干别的事了。
一个简单示例的执行过程
一个简单的示例如下
var promise new Promise(function(resolve, reject) {// 异步操作的代码.....if (true){resolve(已解决);} else {reject(出错了);}});promise.then(function(value){console.log(value);},function(error){console.log(error);});
上面的代码的时序图大体如下 其中
client – 主程序Async – 异步函数PromiseResolvedInvoke – resolved状态回调函数RejectedInvoke – rejected状态回调函数resolve – resolve函数
几个关键过程说明如下
1.4 调用异步函数Async之后然后执行1.5会立即返回一个promise对象然后主函数和异步函数同时往下执行。 2.2 指定promise的回调函数,主程序的任务完成退出 1.6异步函数退出调用resolve()然后执行1.7改变promise的状态 当promise状态改变之后执行1.8调用相应的回调函数。
所以promise的执行过程大体如下主程序创建promise并指定promise各种状态下的回调函数promise调用异步函数并保存异步函数的执行状态当异步函数退出时可以调用resolve/reject改变promise的状态promise在状态变化时调用相应的回调函数。
promise对象
promise保存着异步函数的执行状态。 异步函数通过调用resolve/reject改变promise的状态主函数调用promise的then()方法指定promise在不同状态下的回调函数。然后主程序和异步程序可以各自往下执行当promise状态改变时它会自动调用相应的回调函数。
也就是主函数装配promise异步函数改变promise状态promise监听自身变化调用相应回调函数进行处理。
then
then函数指定promise的回调函数可以链式操作可以返回值其返回值如果不是一个Promise对象则直接作为下一个then的参数否则进行返回的这个Promise的异步函数根据执行结果继续调用下一个then。
所以只有在then里返回Promise的情况下才能看出promise的厉害和用处。
作用
主要是解决多个回调函数的嵌套问题。下面例子就是两个原本需要嵌套的回调函数使用同步的方式表达出来。
var promise doSomething(false);promise.then(function(value){console.log(value);return doSomethingElse(true);},function(error){console.log(error);return doSomethingElse(false);}).then(function(){console.log(成功后接着处理);},function(){console.log(出错后接着处理);});function doSomething(param){//这里省略一些异步操作return new Promise(function(resolve, reject) {if (param){resolve(已解决);} else {reject(出错了);}});}function doSomethingElse(param){//这里省略一些异步操作return new Promise(function(resolve, reject) {if (param){resolve();} else {reject();}});}