Eval js代码不能用yield

时间:2015-06-14 13:00:34

标签: javascript eval yield

这是我的简化代码:

<html>
<body>
    <button onclick="testRun()">Click me</button>
    <script type="application/javascript" language='javascript1.7'>
        function testRun() {
            var txt = 'var func = function*() {console.log("hi");';
            txt += 'yield true;';
            txt += 'console.log("bye");';
            txt += 'yield false;}';
            eval(txt);
            func().next();
            func().next();
        }
    </script>
</body>
</html>

我一直收到以下错误:

  

1.html:1 Uncaught SyntaxError:意外的标记为真

我见过以下例子:

http://forum.unity3d.com/threads/eval-yield-waitforseconds-javascript.248463/

http://unixpapa.com/js/sleep.html

但是我自己无法做到这一点。

任何人都可以指引我朝着正确的方向前进吗?

感谢

编辑: 感谢快速解答,但我遇到了一个新问题: 当使用func()。next();两次我一直在&#34;嗨&#34; &#34;喜&#34;而不是&#34; hi&#34;再见&#34; 谁能帮我理解我做错了什么?

1 个答案:

答案 0 :(得分:1)

如果您将代码更改为:

,则代码将有效
    function testRun() {
        var txt = 'function* func() {console.log("hi");';
        txt += 'yield true;';
        txt += 'console.log("bye");';
        txt += 'yield false;}';
        eval(txt);
        var gen=func();
        gen.next();
        gen.next();
    }