Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/423.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
为什么这个javascript函数生成器不工作?_Javascript_Generator - Fatal编程技术网

为什么这个javascript函数生成器不工作?

为什么这个javascript函数生成器不工作?,javascript,generator,Javascript,Generator,我使用的是node.jsv6.2,执行node file.js344时没有结果。 如果我将调试器放在我选择的任何函数中,它在调试模式下不会停止 仅当我使用const It=m()提取迭代器时,它才会停止但是我看到过上面的模式似乎是正确的例子。我错过了什么? 谢谢。当您调用m()时,您正在初始化生成器,但没有对其执行任何操作。要获得收益,您需要对m()的结果调用next() i、 e 当您调用next时,生成器将继续执行,当遇到yield时,它将挂起。在这种情况下,收益率返回一个承诺,该承诺将在n

我使用的是node.jsv6.2,执行
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