1、爲什麼用Nodejs,它有哪些缺點?
- 事件驅動,通過閉包很容易實現客戶端的生命活期。
- 不用擔心多線程,鎖,並行計算的問題
- V8引擎速度非常快
- 對於遊戲來說,寫一遍遊戲邏輯代碼,前端後端通用
當然Nodejs也有一些缺點:
- nodejs更新很快,可能會出現版本兼容
- nodejs還不算成熟,還沒有大製作
- nodejs不像其他的服務器,對於不同的鏈接,不支持進程和線程操作
2、什麼是錯誤優先的回調函數?
-
錯誤優先(Error-first)的回調函數(Error-First Callback)用於同時返回錯誤和數據。第一個參數返回錯誤,並且驗證它是否出錯;其他參數返回數據。
new Promise((resolve, reject) =>
{
setTimeout(() =>
{
resolve('result');
}, 100)
})
.then(console.log)
.catch(console.error);
3、如何避免回調地獄?
以下方式避免回調地獄
- 模塊化:將回調函數轉換爲獨立的函數
- 使用流程控制庫,例如[aync]
- 使用Promise
- 使用aync/await
4、什麼是Promise?
-
Promise可以幫助我們更好地處理異步操作。下面的實例中,100ms後會打印result字符串。catch用於錯誤處理。多個Promise可以鏈接起來。
new Promise((resolve, reject) => { setTimeout(() => { resolve('result'); }, 100) }) .then(console.log) .catch(console.error);