学习熟知吧,原理仍是继续吧promise
例子1: var isGeted; function getRet(){ return new Promise(function(resolve, reject) { //一些异步操做 if(isGeted){ resolve("yYYYYYYY") } else{ reject("NNNNNNNNNNNNNNNNNN") } }); } isGeted=true; getRet().then(function(data){ console.log("返回数据:"+data) }); isGeted=false; getRet().then(function(data){ console.log("返回数据:"+data) }).catch(function(err){ console.log("错误:"+err) }); 例子2: Promise原理探究: var promise1 = new Promise(function(resolve, reject) { //某个异步方法 setTimeout(function() { resolve('foo'); }, 300); }); promise1.then(function(value) { console.log(value); }); console.log(promise1); //返回:promise对象,状态是pending "foo" console.log(promise1); //返回:promise对象,状态是resolved promise像一个代理,异步方法不知道执行结果,promise预约好,成功执行某方法,失败执行某方法,让异步方法按照成功与失败的设定路线去执行。 又像是个状态管理工具,状态只有三种:resolved,rejected,pending pending---->resolved pending---->rejected promise1.then(function(value) { console.log(value); }).catch(function(err){ }); then其实接受两个函数参数,以下: promise1.then(function(value) { console.log(value); },function(err){ console.log(err); }) 一个是resolve函数,一个是reject函数。 new Promise后就会被执行一次,因此通常外面包成一个函数,如: var funOne = function(){ return new Promise(function(resolve,reject){ }) } funOne.then().then().catch().finally().race().all()等等。
略。异步