一段代码-关于async await
2021.05.08 Sat
1 |
|
js 中的回调函数
1
2
3
4
5
6
7
8
9
10
11const startPrint = (message, callback) => {
message = message.split(' ');
callback(message);
};
startPrint('hello motherfucker', (data) => {
data = data.concat('hello world'.split(' '));
console.log(data);
});
startPrint('hello motherfucker', (data) => {
console.log(data);
});即将一个函数作为另一个函数的参数传递,并且这个函数会对原函数的传入的其他参数作处理然后返回。
async 关键字
在函数声明之前添加 async 关键字,会将函数变成异步函数,返回值是 promise1
2
3
4
5
6
7
8const hello = async () => {
return 'Hello';
};
console.log(hello);
console.log(hello());
hello().then((value) => {
console.log(value);
});await 关键字
await 只在异步函数里面才起作用,它可以放在任何基于 promise 的函数之前。它会在所在行上暂停代码执行,直到 promise 完成,然后返回结果值。1
2
3
4
5const hello = async () => {
result = await Promise.resolve('hello');
console.log(result);
};
hello();await 在函数里不同位置的影响
1
2
3
4
5
6
7
8
9
10
11
12
13
14let arrayTest = [1, 2, 3, 4, 5, 6];
async function test() {
await asyncForeach(arrayTest, (data) => {
console.log(data);
});
console.log('inner');
}
async function asyncForeach(array, callback) {
for (let index = 0; index < array.length; index++) {
await callback(array[index]);
}
}
test();
console.log('out');打印结果 1 out 2 3 4 5 6 inner
1
2
3
4
5
6
7
8
9
10
11
12
13
14let arrayTest = [1, 2, 3, 4, 5, 6];
async function test() {
asyncForeach(arrayTest, (data) => {
console.log(data);
});
console.log('inner');
}
async function asyncForeach(array, callback) {
for (let index = 0; index < array.length; index++) {
await callback(array[index]);
}
}
test();
console.log('out');打印结果 1 inner out 2 3 4 5 6
1
2
3
4
5
6
7
8
9
10
11
12
13
14let arrayTest = [1, 2, 3, 4, 5, 6];
async function test() {
await asyncForeach(arrayTest, (data) => {
console.log(data);
});
console.log('inner');
}
async function asyncForeach(array, callback) {
for (let index = 0; index < array.length; index++) {
callback(array[index]);
}
}
test();
console.log('out');打印结果 1 2 3 4 5 6 out inner
1
2
3
4
5
6
7
8
9
10
11
12
13
14let arrayTest = [1, 2, 3, 4, 5, 6];
async function test() {
asyncForeach(arrayTest, (data) => {
console.log(data);
});
console.log('inner');
}
async function asyncForeach(array, callback) {
for (let index = 0; index < array.length; index++) {
callback(array[index]);
}
}
test();
console.log('out');`打印结果 1 2 3 4 5 6 inner out