Middle+
const obj = [{ value: 1, elems: [ { value: 2, elems: [ { value: 3 }, { value: 6 }, ... ] }, { value: 4, elems: [ { value: 5, elems: [ { value: 6 }, ... ]} ] } ] }] ------------- setTimeout(() => { console.log(1); }, 0); const p = new Promise(resolve => { console.log(2); resolve(); }); p.then(() => { console.log(3) }).then(() => { console.log(4); }); console.log(5);
sobes.tech AI
Antwoord van AI
Laten we de uitvoer volgorde in de console bekijken:
setTimeout(() => {
console.log(1);
}, 0);
const p = new Promise(resolve => {
console.log(2);
resolve();
});
p.then(() => { console.log(3) }).then(() => { console.log(4); });
console.log(5);
Uitleg:
setTimeoutplaatst de callback in de wachtrij van macro-taken met een vertraging van 0.- Bij het maken van de promise wordt de executor onmiddellijk uitgevoerd, dus
console.log(2)wordt direct weergegeven. p.thenvoegt callbacks toe aan de microtask wachtrij.console.log(5)wordt synchrone uitgevoerd na het maken van de promise.
Uitvoer volgorde:
- 2 (direct bij het maken van de promise)
- 5 (na de promise, synchrone)
- 3 (microtask van
then) - 4 (volgende microtask in de
thenketen) - 1 (macro task van
setTimeout)
Resultaat:
2
5
3
4
1