node.js - 未传递回调参数 (Node.js)

标签 node.js

在下面的代码中,我尝试将参数“test”传递给回调。好消息是回调确实被调用了;但是,正在打印字符串“I see undefined”而不是“I see test”。

var MyObject = function(){
}

MyObject.prototype.b = function(data){
   console.log("I see " + data);
}

a = function(callback){
   callback("test");
}

var it = new MyObject();
a(function(){it.b()});

我有预感它与闭包有关,因为如果我直接调用它.b(“test”),我会看到打印的字符串“I see test”。为什么函数没有正确接收参数?

最佳答案

您正在调用不带参数的 it.b(),因此当您进入 b() 方法时没有参数就不足为奇了。如果您希望为 it.b() 显示参数,则必须在回调中声明它,以便随后可以将其传递给 it.b(arg)

a(function(arg){
    it.b(arg)
});

或者,您可以传递回调中的所有参数:

a(function(){
    it.b.apply(it, arguments)
});

或者,您可以使用.bind()

a(it.b.bind(it));

关于node.js - 未传递回调参数 (Node.js),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21325725/

相关文章:

javascript - 如何仅停止当前页面进程,而不停止整个 NodeJS 服务器

java - 简单的android套接字客户端

node.js - MongoDb类型错误: Cannot read property 'insertMany' of undefined

javascript - 在实时聊天中实现链接

javascript - NodeJS 与 connect-busboy 发生错误, "TypeError: Cannot call method ' 未定义”

javascript - YDKJS - 'this' 是如何工作的?

javascript - AWS Lambda 和 promise : Callbacks not being called

node.js - 'NODE_ENV' 在哪里设置为 'production' ?

node.js - 将流式缓冲区转换为 utf8 字符串

node.js - 什么是 npm 模块 spport Redis Sentinel 作为 session 存储