一蜕琴、Promise是什么?
Promise是ES6規(guī)范的新技術军熏,是js中進行異步編程的新的解決方案,在此之前卷扮,異步編程主要是通過回調函數(shù)來實現(xiàn)荡澎。具體可以從兩個部分上看:
??語法上:是一個構造函數(shù)
??功能上:是用來封裝一個一步操作并可以獲取它成功/失敗的結果值
??補充:js編程中哪些屬于異步操作?
常見的定時器,AJAX晤锹,mySQL數(shù)據(jù)庫操作摩幔,以及fs文件操作(node.js:require(‘fs’).readFile('./index.html'),(err,data)=>{ })。
二鞭铆、為什么要用Promise或衡?
1焦影、指定的回調函數(shù)方式更加靈活
在沒有Promise之前指定回調函數(shù)必須在啟動異步任務前進行指定;Promise實現(xiàn):啟動異步任務=>返回Promise對象=>給Promise對象綁定回調函數(shù)(甚至可以在異步任務結束后指定多個)封断,大大的增加了我們指定回調函數(shù)的靈活性斯辰。
2、支持鏈式調用坡疼,可以解決回調地獄問題
? ? ??2·1什么是回調地獄彬呻?
? ? ? ? ? ? 回調函數(shù)嵌套調用,外部回調函數(shù)異步執(zhí)行的結果是嵌套的回調執(zhí)行的條件
(類似于俄羅斯套娃柄瑰,函數(shù)套函數(shù))
? ? ? ???2·2回調地獄缺點
? ? ? ? ? ? ? ? 不利于閱讀闸氮、不便于異常處理
? ? ? ? ??2·3解決方案
? ? ? ? ? ? ? ? Promise鏈式調用
三、面試中問到Promise概念可以簡單這么概述下
首先Promise是ES6中新引出的異步解決方案教沾,從語法上來說他是一個構造函數(shù)蒲跨,可以實例化對象,封裝異步操作授翻,獲取成功/失敗的結果或悲,優(yōu)點是支持鏈式調用,可以解決回調地獄問題藏姐,這些是一定要答出來的隆箩。