【发布时间】:2018-08-17 02:19:57
【问题描述】:
我一直在研究 Promises 和 Generators,但我卡在了下面的脚本中:
function getFile(file) {
return new Promise(function (resolve) {
fakeAjax(file, resolve);
});
}
function* getFiles() {
var p1 = getFile('file1');
var p2 = getFile('file2');
var p3 = getFile('file3');
output(yield p1);
output(yield p2);
output(yield p3);
}
function runner(gen) {
var g = gen();
function run(val) {
val || undefined;
var next = g.next(val);
if(!next.done && !next.value !== undefined) {
next.value
.then(function(v) {
run(v);
});
}
}
run();
}
runner(getFiles);
我想弄清楚的是,当我在 getFiles 上获得第一个收益时会发生什么?为什么这段代码有效,我不明白。
*EDIT:输出只是一个console.log包装在一个函数中。 fakeAjax 函数根据请求的“文件”从对象返回文本。
【问题讨论】:
-
output函数是什么? MDN 为生成器和 Promise 提供了出色的文档(不确定您不了解哪些) - 我建议阅读 MDN 上的文档 - 或 promisejs.org/generators
标签: javascript ecmascript-6 es6-promise