为什么这个javascript函数生成器不工作?
我使用的是node.jsv6.2,执行为什么这个javascript函数生成器不工作?,javascript,generator,Javascript,Generator,我使用的是node.jsv6.2,执行node file.js344时没有结果。 如果我将调试器放在我选择的任何函数中,它在调试模式下不会停止 仅当我使用const It=m()提取迭代器时,它才会停止但是我看到过上面的模式似乎是正确的例子。我错过了什么? 谢谢。当您调用m()时,您正在初始化生成器,但没有对其执行任何操作。要获得收益,您需要对m()的结果调用next() i、 e 当您调用next时,生成器将继续执行,当遇到yield时,它将挂起。在这种情况下,收益率返回一个承诺,该承诺将在n
node file.js344
时没有结果。
如果我将调试器放在我选择的任何函数中,它在调试模式下不会停止
仅当我使用const It=m()提取迭代器时,它才会停止代码>但是我看到过上面的模式似乎是正确的例子。我错过了什么?
谢谢。当您调用m()
时,您正在初始化生成器,但没有对其执行任何操作。要获得收益,您需要对m()
的结果调用next()
i、 e
当您调用next
时,生成器将继续执行,当遇到yield
时,它将挂起。在这种情况下,收益率返回一个承诺,该承诺将在next
结果的value
属性中可用
这是一本很好的读物。当您调用m()
时,您正在初始化生成器,但没有对其执行任何操作。要获得收益,您需要对m()
的结果调用next()
i、 e
当您调用next
时,生成器将继续执行,当遇到yield
时,它将挂起。在这种情况下,收益率返回一个承诺,该承诺将在next
结果的value
属性中可用
这是一本很好的读物。聪明的引语是有意的吗?你会做出承诺,但不要做任何事情。您不需要一个corountine环境来实现这一点吗?我认为只有在使用“return”这个词时,才应该从函数返回承诺。尝试类似于n()return New Promise((resolve,reject)
的方法智能引用是有意的吗?你给出了承诺,但不做任何事情。你不需要一个corountine环境来实现这一点吗?我认为承诺应该只从函数返回,并且只在使用“return”这个词时返回。尝试类似于n()的方法返回新承诺((解决,拒绝)
非常感谢,答案和链接非常有用非常感谢,答案和链接非常有用
const f = n => new Promise((resolve, reject) => {
setTimeout(()=>{
if (n > 2){
resolve({result: `${n} is higher than 2`});
} else {
resolve({error: `${n} is lower than 2`});
}
}, 1000);
});
function *m(){
const {result, error} = yield f(parseInt(process.argv[2]));
if(error){
console.log(error);
} else {
console.log(result);
}
}
m();
let generator = m()
generator.next().value.then(result => console.log(result))
// will log { result: '344 is higher than 2' } to the console