gpt4 book ai didi

javascript - VO,生成器,Promise和返回对象之间的交互。

转载 作者:行者123 更新时间:2023-12-03 13:24:11 26 4
gpt4 key购买 nike

我想了解 Nightmare 和vo如何相互作用。请在下面(几乎) Nightmare 页面的原始示例中查找。

任何人都可以给我一个提示,如何找出发生的事情的顺序,即

  • 为什么生成器函数需要让代码起作用的yield和return语句
  • 如何通过vo/Nightmare 自动触发 yield ,以使序列合理运行。背景是,我想知道何时将 yield 放置在什么地方,但是这里的yield语句似乎除了实际触发等待之外没有做任何其他事情。以我目前的知识,我可以在调用“.goto()”和“.end()”时复制示例并“等待”。

  • 不幸的是, Nightmare 文档没有说明其设计如何工作(与Promise和生成器的交互)。

    如果有人能想到一个示例,如何手动解决run() promise 并触发所有使生成器函数按预期工作所必需的.next(),那么这将是一个很大的帮助。
    var Nightmare = require('nightmare');
    var vo = require('vo');

    vo( run() )(function(err, result) {
    if (err) throw err;
    console.log("end result length: ", result.length);
    });

    function *run() {
    var x = Date.now();
    var nightmare = Nightmare();
    var html = yield nightmare
    .goto('http://google.com')
    .evaluate(function() {
    return document.getElementsByTagName('html')[0].innerHTML;
    });

    console.log("done in " + (Date.now()-x) + "ms");
    console.log("result:", html.length);

    yield nightmare.end();
    return html;
    }

    谢谢 !

    最佳答案

    您需要按名称传递方法,而无需实际调用它。 Vo在运行时将调用该方法。该代码应阅读

    vo( run )(function(err, result) {
    if (err) throw err;
    console.log("end result length: ", result.length);
    });

    关于javascript - VO,生成器,Promise和返回对象之间的交互。,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34854851/

    26 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com