兩者之間的主要區(qū)別在于,使用回調(diào)方法時,我們通常只是將回調(diào)傳遞給一個函數(shù),該函數(shù)將在完成時被調(diào)用以獲取某些結(jié)果。但是,在Promise中,您將回調(diào)附加在返回的Promise對象上。
1.callback
回調(diào)函數(shù)本身是我們約定俗成的一種叫法,我們定義它,但是并不會自己去執(zhí)行它,它最終被其他人執(zhí)行了。
優(yōu)點(diǎn):比較容易理解;
缺點(diǎn):1.高耦合,維護(hù)困難,回調(diào)地獄;2.每個任務(wù)只能指定一個回調(diào)函數(shù);3.如果幾個異步操作之間并沒有順序之分,同樣也要等待上一個操作執(zhí)行結(jié)束再進(jìn)行下一個操作。
2.Promise
ES6給我們提供了一個原生的構(gòu)造函數(shù)Promise,Promise代表了一個異步操作,可以將異步對象和回調(diào)函數(shù)脫離開來,通過.then方法在這個異步操作上綁定回調(diào)函數(shù),Promise可以讓我們通過鏈?zhǔn)秸{(diào)用的方法去解決回調(diào)嵌套的問題,而且由于promise.all這樣的方法存在,可以讓同時執(zhí)行多個操作變得簡單。
promise對象存在三種狀態(tài):
1)Fulfilled:成功狀態(tài)
2)Rejected:失敗狀態(tài)
3)Pending:既不是成功也不是失敗狀態(tài),可以理解為進(jìn)行中狀態(tài)
Promise的缺點(diǎn):
1.當(dāng)處于未完成狀態(tài)時,無法確定目前處于哪一階段。
2.如果不設(shè)置回調(diào)函數(shù),Promise內(nèi)部的錯誤不會反映到外部。
3.無法取消Promise,一旦新建它就會立即執(zhí)行,無法中途取消。
想要了解跟多關(guān)于web前端培訓(xùn)課程內(nèi)容歡迎關(guān)注賦能網(wǎng)web前端培訓(xùn),賦能網(wǎng)除了這些技術(shù)文章外還有免費(fèi)的高質(zhì)量web前端培訓(xùn)課程視頻供廣大學(xué)員下載學(xué)習(xí)
相關(guān): Java培訓(xùn)JavaWeb之XMLHttpRequest對象的屬性_自學(xué)Java真的找不到好工作嗎
本文鏈接:
本文章“前端培訓(xùn)之Promie和Callback的區(qū)別”已幫助 119 人
免責(zé)聲明:本信息由用戶發(fā)布,本站不承擔(dān)本信息引起的任何交易及知識產(chǎn)權(quán)侵權(quán)的法律責(zé)任!
本文由賦能網(wǎng) 整理發(fā)布。了解更多培訓(xùn)機(jī)構(gòu)》培訓(xùn)課程》學(xué)習(xí)資訊》課程優(yōu)惠》課程開班》學(xué)校地址等機(jī)構(gòu)信息,可以留下您的聯(lián)系方式,讓課程老師跟你詳細(xì)解答:
咨詢熱線:4008-569-579