當涉及到語法錯誤時,爲什麼本地Promise的行爲就像try/catch?Promises爲什麼捕獲語法錯誤?
當您需要按順序執行一些異步操作時,Promise在流量控制中顯然具有價值。但是,爲每個承諾實施自己的錯誤處理實施方案的必要性有時會讓他們很難處理。
採取以下代碼:
asdf
let one = new Promise((resolve, reject) => {
asdf
}).catch(err => {
console.log(err)
console.log(err.stack)
})
第一語法錯誤產生一個典型的瀏覽器誤差和與18個條目的堆棧跟蹤。承諾的版本有4.
所以我的問題是,當編寫規範並在本地實現它時,他們是否保留了承諾的用戶空間實現的try/catch類功能,以便它可以用於流控制但保留標準錯誤處理?
因爲這不是一個語法錯誤,但在未來的參考誤差(可能)發生的歷史。 – Bergi
請注意,錯誤是ReferenceErrors而不是SyntaxErrors。後者不能被捕捉,因爲引擎不能很好地理解執行腳本。但是,'asdf'是一個有效的標識符,單獨訪問一個變量是一個有效的語句。所以,解析器找不到任何問題。 –
不確定這是否合適的重複:[爲什麼用於拒絕JS中的承諾的例外](http://stackoverflow.com/q/21616432/1048572)如果您的問題是關於其他問題,請評論。 – Bergi