1. Object.values
可以用来获取对象的 value 的集合
const obj = {
name: "柯基",
age: 22,
gender: "男",
};
const values = Object.values(obj);
console.log(values); // [ '柯基', 22, '男' ]
2. Object.entries
可以用来获取对象的键值对集合
const obj = {
name: "柯基",
age: 22,
gender: "男",
};
const entries = Object.entries(obj);
console.log(entries);
// [ [ 'name', '柯基' ], [ 'age', 22 ], [ 'gender', '男' ] ]
3. async/await
理解就是:以同步方式执行异步操作
平时可能会遇到这种场景,接口一,请求到数据一,而数据一被当做请求二的参数去请求数据二,会用 Promise 这么做
function fn() {
// 模拟第一次请求
return new Promise((resolve, reject) => {
setTimeout(() => {
resolve(5);
}, 1000);
}).then((res) => {
// 模拟第二次请求
new Promise((resolve, reject) => {
setTimeout(() => {
// 拿第一次请求的数据去乘10,当做第二次请求的数据
resolve(res * 10);
}, 2000);
}).then((sres) => {
console.log(sres);
});
});
}
fn(); // 1 + 2 = 3 3秒后输出 50
这样的嵌套是不美观的,如果有很多个接口,那就会嵌套很多层,此时可以使用 async/await 来以同步方式执行异步,注意以下几点:
await 只能在 async 函数里使用
await 后面最好接 Promise,如果后面接的是普通函数则会直接执行
async 函数返回的是一个 Promise
function fn1() {
return new Promise((resolve, reject) => {
setTimeout(() => {
resolve(5);
}, 1000);
});
}
function fn2(data) {
return new Promise((resolve, reject) => {
setTimeout(() => {
resolve(data * 10);
}, 2000);
});
}
async function req() {
// 同步方式执行异步,像排队一样
const data1 = await fn1(); // 等待1秒后返回数据再往下执行
const data2 = await fn2(data1); // 拿data1去请求2秒后,往下走
console.log(data2); // 总共3秒后 输出 50
}
req();