JS實現數組扁平化處理 點擊打開視頻講解更加詳細 期望結果: 將數組扁平化並去重 最終得到一個升序且不重覆的數組 步驟: 1、數組扁平化 2、去重 3、排序 <template> <div id="home"> JS實現數組扁平化處理,妙不可言啊! <!-- 期望結果: 將數組扁平化並去重 最終得到 ...
- 回調函數內部的 this 都是指向 window;回調函數定義:當前處理邏輯完成之後,執行封裝在callback函數中的後處續理邏輯;
- new Promise() 參數接收一個同步自執行匿名函數,構建實例時,該參數就會自動執行
let promise = new Promise((resolve,reject) => { console.log(1); resolve("returnValue"); // resolve和reject函數傳入的實參就當前promise對象的[[PromiseResult]]的值 }); console.log(2); //控制台輸出1->2 promise對象: [[PromiseState]]: "pending" // 當前promise的狀態,可選值:fulfilled(成功態)、rejected(失敗態)、pending(等待,初始值) [[PromiseResult]]: "returnValue" // 當前promise的值 resolve() -> PromiseStatus從pending變為fulfilled;只接受一個參數 reject() -> PromiseStatus從pending變為rejected;只接受一個參數
- then 方法會返回一個新的 promise(testPromise):
let promise = new Promise((resolve, reject) => { resolve(1);}); let newPromise = promise.then(res => { return res*2; // 預設 return undefined; 返回值做為當前then方法返回的promise的[[PromiseResult]]屬性的值 }) // newPromise.[[PromiseResult]] = 2
- then 拋錯
let promise = new Promise((resolve, reject) => { resolve(1); }); // 如果then方法拋錯 let newPromise = promise.then(res => { throw new Error("參數必須是字元串!"); }) newPromise 對象: [[PromiseState]]: "rejected" [[PromiseResult]]: Error: 參數必須是字元串!
如果存在錯誤捕獲,則控制台不會報錯,輸出如下:
newPromise.catch(err => {
console.log(err);
})
- 如果 then 方法的回調函數返回一個普通值(a),則 returnPromise.[[PromiseResult]] = a
- 如果 then 方法的回調函數返回一個promise(b),則 returnPromise= b
let promise = new Promise((resolve, reject) => {resolve(1);}); let newPromise = promise.then(res => { return new Promise((resolve, reject) => { resolve('a'); }); }) newPromise對象如下:[[PromiseState]]: "fulfilled" [[PromiseResult]]: a
- Promise.reject('reject') 返回一個新失敗態的 promise:{[[PromiseState]]: "rejected" , [[PromiseResult]]: "reject"} ; 如果 reject() 不接收參數,則返回的 [[PromiseResult]]=undefined
- Promise.all,promises 數組中所有 promise 對象都達到 resolve 狀態,才執行 then 回調。
var p1 = Promise.resolve(1); var p2 = Promise.resolve(2); var p3 = Promise.resolve(3); const promise = Promise.all([p1, p2, p3]).then(function(results){ return results; }); console.log(promise); // promise = {[[PromiseState]]: "fulfilled" , [[PromiseResult]]: [1,2,3]}