【发布时间】:2018-08-21 11:35:06
【问题描述】:
我搜索了真实案例 ES6 生成器,但没有找到正确的解释。我正在尝试理解第一个 Promise 场景。
假设我们有 2 个 rest api:getUser 和 getUserComments
我们不想创建一个线性代码结构来避免嵌套的 then 回调函数。所以...
定义模拟 API
function getUser () {
return new Promise(function(resolve, reject) {
return setTimeout(function() { resolve({id: 1, label: 'John'}); }, 200);
});
}
function getUserComments(userId) {
return new Promise(function(resolve, reject) {
return setTimeout(function() {resolve({comments: 'comments', userId: userId}); }, 200);
});
}
定义生成器
function* generator () {
yield getUser();
yield getUserComments(userId); // userId represents data from first request / first yield how should I pass it ?!
}
var g = generator();
var first = g.next(1);
var second = g.next(2);
如何从第一个收益 (yield getUser()) 获得响应并将其传递给下一个收益 (yield getUserComments(userId))?
【问题讨论】:
-
修复你的代码,它是无效的。
标签: javascript ecmascript-6 generator yield