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);

 

posted @ 2020-12-12 09:45  xqcokid  阅读(48)  评论(0编辑  收藏  举报