1、异步函数 (async function)
A)async关键字位置
• 异步函数声明: async function foo() {}
• 异步函数表达式: const foo = async
• 异步函数定义: let obj= { async foo() {} }
• 异步箭头函数:const foo = async () => {}
B)异步函数总是返回Promise对象
async function test(){
return '返回prominse对象';
}
test()
.then(res => { // 异步函数的promise完成状态
console.log(res)
})
.catch(err => { // 拒绝状态
console.log(err)
})
C)通过await关键字处理asyn计算的结果和错误
- await关键字只允许出现在async异步函数内部
- 按顺序处理async异步返回的值
- 可以在调用任何返回promise对象的函数时使用await,意为等待await标记的代码返回promise完成
async function test() {
const result = await asyncFunc();
console.log(result);
}
D)Promise.all()
Promise.all可以将多个Promise实例包装成一个新的Promise实例。同时,成功和失败的返回值是不同的,成功的时候返回的是一个结果数组,而失败的时候则返回最先被reject失败状态的值。
- Promise.all()会在任意一个传入的promise失败是返回失败
let testOne = new Promise((resolve, reject) => {
resolve('testOne成功')
})
let testTwo = new Promise((resolve, reject) => {
resolve('testTwo成功')
})
let testThree = Promse.reject('testThree失败')
// 将testOne和testTwo两个promise实例包裹为一个数组传入
// 都成功时返回结果包裹的数组
Promise.all([testOne, testTwo])
.then(result =>{
console.log(result) // ['testOne成功', 'testTwo成功']
})
.catch(error => {console.log(error)})
// 当其中任意一个失败时,Promise.all()返回失败
Promise.all([testOne, testTwo, testThree])
.then(result =>{console.log(result)})
.catch(error => {
console.log(error) // 'testThree失败'
})
2、Object.values()
- 返回一个数组,成员是参数对象自身的(不含继承的)所有可遍历属性的值
Object.values({name: 'sun', age: 24})
// ['name', 24]
// 拓展
Object.keys({name: 'sun', age: 24})
// ['name', 'age']
3、Object.entries()
- 返回一个数组, 其成员是参数对象自身(不含继承)所有可遍历属性的键值对数组
Object.entries({name: 'sun', age: 24})
// [['name', 'sun'], ['age': 24]]
4、String padding特性
padStart和padEnd分别在指定的字符串开头和末尾添加重复的字符串直到指定长度
• 新的字符串方法
• 允许将空字符串或其他字符串添加到原始字符串的开头或结尾
• 不会修改原字符串
• 第一个参数:字符串指定到达的长度,第二个参数:添加的字符串
• 如果省略第二个参数,则会使用一个空格字符串
// padStart 在开头添加
let str = 'sun'
str.padStart(10, '123') // 1231231sun
// padEnd 在末尾添加
let strTnd = 'sun'
strTnd.padEnd(10, '123') // sun1231231
// 如果省略第二个参数,则会使用一个空格字符串
let strEmpty = 'sun'
strEmpty.padEnd(6) // 'sun'
5、Object.getOwnPropertyDescriptors()
Object.getOwnPropertyDescriptors()函数用来获取一个对象的所有自身属性的描述符,如果没有任何自身属性,则返回空对象。
let obj = {
name: 'sun',
age: 24,
}
Object.getOwnPropertyDescriptors(obj)
// 下面为返回的数据
{
name: {
configurable: true, // 能都使用delete删除
enumerable: true, // 可枚举性
value: "sun",
writable: true, // 能否修改
},
age: {
configurable: true,
enumerable: true,
value: age,
writable: true,
}
}