promise補充
除了最原始的then調用,promise還支持all和race調用。
- promise.all將所有請求的數據存放在數組內,
- promise.race方法會獲取最先讀取完的數據,此時獲取的數據不再是數組形式。
const fs = require('fs')
const readFilePromise = fileName=> {
return new Promise((resolve, reject) => {
fs.readFile(fileName, (err, data) => {
if (err) {
reject(err)
}else{
resolve(data.toString())
}
})
})
}
const p1 = readFilePromise('./1.json')
const p2 = readFilePromise('./2.json')
Promise.all([p1, p2]).then((results) => {
console.log(results)//數組
})
Promise.race([p1, p2]).then((data) => {
console.log(data)//注意 此時data爲p1,p2中最先讀取完的數據
})
對象默認屬性
有時候我們需要給對象設置默認屬性,通過使用…運算符可以更優雅的實現
function getDefaultProp(obj) {
const defaultProps = {
name: "tom",
age: 18
}
obj = {
...defaultProps,
...obj
}
return obj;
}
var obj = {
age: 20,
name: "jack"
}
console.log(getDefaultProp())//{ name: 'tom', age: 18 }
console.log(getDefaultProp(obj))//{ name: 'jack', age: 20 }
函數默認參數
es6中允許函數設置默認參數,甚至可以設置強制參數,更方便開發
強制參數
var required = () => {throw new Error('缺少參數')};
var add = (a = required(), b = required()) => a + b;
console.log(add(1, 2)) //3
console.log(add(1))//報錯 缺少參數
默認參數
var defaultAdd= (a = 1, b = 2) => a + b;
console.log(defaultAdd())//3
使用Set去重數組
var arr = [10, 2, 45, 100,10,10,2,45,100,100];
function arr_no_repeat(arr) {
return [...new Set(arr)];
}
console.log(arr_no_repeat(arr)) //[10, 2, 45, 100]