gpt4 book ai didi

javascript - 回调 - 未定义

转载 作者:可可西里 更新时间:2023-11-01 11:21:50 26 4
gpt4 key购买 nike

我有一个文件(我们称之为“file1”),我在其中插入一个键值并获取它;所以这里我有我对 file1 的实现:

var rdb;

module.exports = function(_app) {
rdb = redis.createClient();
return module.exports;
}


module.exports.parse = function (name, callback) {
rdb.set(name, 'myValue', function(err, data) {
console.log("SET:", err, data);
});
rdb.get(name, function(err, value) {
callback(err, value);
});
}

但是当我在另一个文件中调用我的解析函数时,它说解析未定义:

var f1;
module.exports = function(_app) {
app = _app;
f1 = require('./file1.js')(_app);
};



f1.parse('test', function(err, data){
console.log(err, value);
});

我做错了什么吗?

最佳答案

时机。将 f1.parse... 放入 function(_app) {...} 中。您在加载之前使用 f1.parse

即加载文件时,会发生这种情况:

  • f1 声明
  • module.exports 被定义为一些函数(注意:该函数还没有执行,所以 f1 = require(...) 不会发生)
  • f1.parse 被调用,但是 f1 仍然是 undefined

编辑:一个简短的例子,没有所有的 Redis 垃圾:

// a.js
module.exports = function(_app) {
return module.exports;
}
module.exports.parse = function (name, callback) {
console.log("parse");
}

// b.js
module.exports = function(_app) {
var f1 = require('./a.js')(_app);
f1.parse('test', function(err, data){ console.log(err, value); });
};

// c.js
require('./b.js')("foo");

运行node c.jsparse出来了,没有报错。

关于javascript - 回调 - 未定义,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25539594/

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