理解 Promise

promise 跟回調函數相比,可讓咱們更方便地定義異步返回後的操做。
基本用法:javascript

//指定函數名 a、b
let p = new Promise(function(a, b){ 

    //指定promise何時改變狀態,以及改變時傳遞的數據
    setTimeout(()=>a('I am resolve message'), 1000)//1
    setTimeout(()=>b('I am reject message'), 3000);//2
});

//指定改變時的回調函數,來處理數據
p.then(msg=>console.log(msg), msg=>console.log(msg))

咱們不用操心改變狀態這個過程的實現,而只須要指定函數名ab——它們的函數體由瀏覽器定義,功能分別是將promise的狀態變成「成功」和「失敗」。java

promise狀態改變時,瀏覽器就會調用回調函數。promise

注意 promise 的狀態只能從「未完成」變成「成功」或「失敗」,而不能從「成功」變成「失敗」,因此上面代碼中,當1生效後,2就不會生效了。另外傳遞的數據能夠是任何類型,甚至能夠是promise類型來實現鏈式調用。瀏覽器

理解了基本的流程,其餘的API應該也很容易了。異步

相關文章
相關標籤/搜索