Promise
通过网络获取数据,可能会获取失败返回错误,处理这两种情况,一开始使用回调函数,现在使用Promise对象,此对象里面就包含了需要处理的这两种情况,分别用resolve和reject函数,它们的参数就是从网络上接收到的数据(可能也会是错误信息),但是有且仅有一个函数被执行,接着Promise对象返回新的Promise对象,我们就可以通过调用then方法来处理这两种情况其中一个,所以then方法最多有两个参数,第一个参数是函数用来处理resolve接收到的数据,第二个参数也是函数用来处理reject接收到的error信息,还有catch方法,它只是then(null, reject)的简写,还有一个finally方法,它不管结果是哪种情况都会执行,所以可以通过它来执行通用的代码。
function delay(ms) { // your code return new Promise(resolve => { setTimeout(function() { resolve('re') }, ms) }) } delay(3000).then((ret) => alert(ret));
引用链接
新旧方法对比:
promise的特点是将回调函数附加在包含返回值的promise对象上,而原来的方法是将回调函数作为参数传递进去。
doSomething(function(result) { doSomethingElse(result, function(newResult) { doThirdThing(newResult, function(finalResult) { console.log('Got the final result: ' + finalResult); }, failureCallback); }, failureCallback); }, failureCallback);
doSomething() .then(function(result) { return doSomethingElse(result); }) .then(function(newResult) { return doThirdThing(newResult); }) .then(function(finalResult) { console.log('Got the final result: ' + finalResult); }) .catch(failureCallback);