Skip to content

Commit 46a613e

Browse files
committed
22/03/12
1 parent 6b41129 commit 46a613e

1 file changed

Lines changed: 42 additions & 0 deletions

File tree

‎JavaScript/Js常见手写题总结.md‎

Lines changed: 42 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -712,4 +712,46 @@ arr.forEach((v) => {
712712
if(!obj[v]) obj[v] = 1;
713713
})
714714
console.log(Object.keys(obj).map(item => Number(item))); // [1, 2, 3, 5]
715+
```
716+
717+
## 串行执行Promise
718+
719+
720+
### reduce
721+
```javascript
722+
const arr = [
723+
() => Promise.resolve(1),
724+
res => Promise.resolve(res * 2),
725+
res => Promise.resolve(res * 2),
726+
res => Promise.resolve(res * 3),
727+
res => new Promise(r => setTimeout(() => r(res), 1000))
728+
];
729+
730+
731+
arr.reduce((pre, cur) => {
732+
return pre.then(res => cur(res));
733+
}, Promise.resolve()).then(res => {
734+
console.log(res);
735+
});
736+
```
737+
738+
### async/await
739+
740+
```javascript
741+
const arr = [
742+
() => Promise.resolve(1),
743+
res => Promise.resolve(res * 2),
744+
res => Promise.resolve(res * 2),
745+
res => Promise.resolve(res * 3),
746+
res => new Promise(r => setTimeout(() => r(res), 1000))
747+
];
748+
749+
(async () => {
750+
let preResult = null;
751+
for (let i = 0; i < arr.length; i++) {
752+
const fn = arr[i];
753+
preResult = await fn(preResult);
754+
console.log(preResult);
755+
}
756+
})();
715757
```

0 commit comments

Comments
 (0)