有个地方没弄明白

来源:7-1 异步迭代:for await of

幕布斯0273514

2020-07-07

function getPromise(time) {
return new Promise((resolve, reject) => {
setTimeout(() => {
resolve(time);
}, time);
});
}

const arr = [getPromise(1000), getPromise(2000), getPromise(3000)];
arr[Symbol.asyncIterator] = function () {
let nextIndex = 0;
return {
next() {
return nextIndex < arr.length
? {
value: arr[nextIndex++],
done: false,
}

: {
value: undefined,
done: true,
}
;
},
};
};

async function test() {
for await (let key of arr) {
console.log(key);
}
}

test();
在使用异步的使用,定时器里的resolve({value:time,done:false}),而不能直接返回resolve(time)-输出结果为Promise {}

写回答

1回答

谢成

2020-07-08

请问想问的问题是什么呢?

0
2
谢成
回复
幕布斯0273514
在课程中已经多次强调,返回值的格式是有要求的,比如是对象里面有value和done,这个是约定。
2020-07-09
共2条回复

JavaScript ES(6-11)全版本语法 前端都需要的基础课

前端无门槛学习,从ES6到ES11,一套课程掌握JS最新语法

1328 学习 · 296 问题

查看课程