并發與并行的區別?
- 并發是宏觀概念,我分別有任務 A 和任務 B,在一段時間內通過任務間的切換完成了這兩個任務,這種情況就可以稱之為并發。
- 并行是微觀概念,假設 CPU 中存在兩個核心,那么我就可以同時完成任務 A、B。同時完成多個任務的情況就可以稱之為并行。
什么是回調函數?回調函數有什么缺點?如何解決回調地獄問題?
ajax(url, () => {// 處理邏輯})// 會存在回調地獄
復制代碼
回調地獄問題
- 嵌套函數存在耦合性,一旦有所改動,就會牽一發而動全身
- 嵌套函數一多,就很難處理錯誤
- 不能使用 try catch 捕獲錯誤,不能直接 return
你理解的 Generator 是什么?(生成器,會返回一個迭代器)
注意next傳參和yield返回值的關系
function *foo(x) {let y = 2 * (yield (x + 1))let z = yield (y / 3)return (x + y + z)}let it = foo(5)console.log(it.next()) // => {value: 6, done: false}console.log(it.next(12)) // => {value: 8, done: false}console.log(it.next(13)) // => {value: 42, done: true}
復制代碼