promise對象解決回調地獄

先放一張圖片感受一下回調地獄

看起來是真的很讓人頭痛的東西

而現在我這裏使用promise對象來解決回調地獄

 

採用鏈式的 then,可以指定一組按照次序調用的回調函數。

這時,前一個 then 裏的一個回調函數,返回的可能還是一個 Promise對象(即有異步操作),

這時後一個回調函數,就會等待該 Promise對象的狀態發生變化,纔會被調用。

由此實現異步操作按照次序執行。

複製代碼
var sayhello = function (name) {
  return new Promise(function (resolve, reject) {
    setTimeout(function () {
      console.log(name);
      resolve();  //在異步操作執行完後執行 resolve() 函數
    }, 1000);
  });
}
sayhello("first").then(function () {
  return sayhello("second");  //仍然返回一個 Promise 對象
}).then(function () {
  return sayhello("third");
}).then(function () {
  console.log('end');
}).catch(function (err) {
  console.log(err);
})
//輸出:first  second  third end
複製代碼

上面代碼中,第一個 then 方法指定的回調函數,返回的是另一個Promise對象。

這時,第二個then方法指定的回調函數,就會等待這個新的Promise對象狀態發生變化。

如果變爲resolved,就繼續執行第二個 then 裏的回調函數

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章