異步解決方案良藥Promise

異步解決方案良藥Promise

promise

目前比較流行的異步解決方案,本質上是一個構造函數ajax

一、狀態

promise有三種狀態,初始的狀態都是pedding,包括成功的狀態失敗的狀態還有等待的狀態promise

  • promise.all()全部的promise對象成功纔會觸發成功的狀態,不然失敗狀態
  • promise.race()任意一個子promise的狀態觸發後

二、出現的緣由

咱們來經過一個例子來講明一下異步調用的問題異步

let url1 = 'http://xxx.xxx.1';
$.ajax({
    url:url1,
    error:function (error) {},
    success:function (data1) {
        console.log(data1);
    }
});

那當咱們發出多個請求的時候就只能以嵌套的方式來解決函數

let url1 = 'http://xxx.xxx.1';
let url2 = 'http://xxx.xxx.2';
let url3 = 'http://xxx.xxx.3';
$.ajax({
    url:url1,
    error:function (error) {},
    success:function (data1) {
        console.log(data1);
        $.ajax({
            url:url2,
            data:data1,
            error:function (error) {},
            success:function (data2) {
                console.log(data2);
                $.ajax({
                    url:url3,
                    data,
                    error:function (error) {},
                    success:function (data3) {
                        console.log(data3);
                    }
                });
            }
        });
    }
});

三、主要的問題

  • 代碼臃腫。
  • 可讀性差。
  • 耦合度太高,可維護性差。
  • 代碼複用性差。
  • 容易滋生 bug。
  • 只能在回調裏處理異常。

4 、Promise 的使用

構造函數

Promise 是一個構造函數,使用 new 操做符返回一個 promise 對象url

構造函數接收一個 excutor 函數做爲參數code

excutor 函數有兩個函數類型的參數 resolve 和 reject對象

相關文章
相關標籤/搜索