我试图理解回调是如何工作的,所以我创建了一个函数并传递了一个名为’callback’的第二个参数,我在函数的末尾用’callback(arr)’调用它.但是我收到的错误是:“回调不是函数”?你能告诉我我做错了什么吗?
UPDATE
vo是一个nodejs库,它接受一个生成器函数*()并运行它的所有产量.它基本上是一种处理异步代码并减少回调的方法(是的,我知道我也使用了回调,但这几乎是一个选择).一个更受欢迎的图书馆做同样的事情是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]; 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’文档告诉你为什么,但我看到了一个exaplme here.