javascript - 如何将回调传递给传递给 "vo"库的生成器?

标签 javascript node.js callback generator nightmare

我试图了解回调的工作原理,因此我创建了一个函数并传递了第二个名为“callback”的参数,我在函数末尾用“callback(arr)”调用它。但是我收到一条错误消息:“回调不是函数”?你能告诉我我做错了什么吗?

更新

vo 是一个 nodejs 库,它采用生成器函数* () 并运行它的所有 yields 。它基本上是一种使用较少回调处理异步代码的方法(是的,我知道我也使用了回调,但这几乎是一个选择)。做完全相同事情的一个更流行的库是 co。 VO链接:https://github.com/matthewmueller/vo

var Nightmare = require('nightmare');
var vo = require('vo');

function* MyFunction(query, callback) {
    arr = [];
    for (i = 0; i < 1; i++) {
        arr.push(yield Nightmare({
                show: true
            }).goto(`http://google.com`)
            .inject('js', 'jquery-3.1.0.js')
            .evaluate(() => {
                var title;
                title = 1
                extend = 2
                var img;
                img = 3
                var par;
                par = 4
                url = window.location.href;
                var par_arr = [5, 5, 5, 5];


                return {
                    title: title,
                    img: img,
                    par: par,
                    par_arr: par_arr,
                    url: url
                }

            }).end()
            .catch(function(error, nightmare) {

                console.error('Search failed:', error);
            }))
    }

    callback(arr);

    return arr;
}

vo(MyFunction)('query', (arr) => {
    console.log(arr);
});

最佳答案

这在 my enviroment 中工作;

var vo = require('vo');

function* idMaker(query, params){

  for (var i = 0; i < 5; i++) {
        console.log(query);
  }
 params.callback("callback value");
  return;
}

vo(idMaker)("param value",{callback: (value)=>console.log(value)}  );

输出:

param value
param value
param value
param value
param value
callback value

我现在没有时间阅读“vo”文档来告诉你原因,但我看到了一个例子 here .

关于javascript - 如何将回调传递给传递给 "vo"库的生成器?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39316296/

相关文章:

javascript - JSON javascript undefined variable 问题

javascript - [webpack 新手] webpack list 插件的自动前缀问题

javascript - 合并两个异步请求的数据以应答这两个请求

javascript - 无法在 Node.js 的 ES6 中定义的类中调用方法

javascript - 制作一个为任何函数添加延迟回调的函数?

javascript - 使用城市名称在 map 上放置标记,而不是在 JavaScript map 库中使用纬度和经度?

javascript - 转换长时间戳以提取 typescript 中的年份

javascript - 我找不到使用 Protractor 选择此链接的方法

Python Tornado 更新请求之间的共享数据

javascript - 每次迭代完成后再次迭代函数