dsp*_*099 2 javascript callback node.js
function one(num, callback) {
return callback(num);
};
function two(num) {
// return num + 99; << this works
setTimeout(function() { return num + 99; }, 1000); // << this doesn't
};
console.log(one(55, two));
Run Code Online (Sandbox Code Playgroud)
setTimeout中返回的结果是未定义的.我可以看到它为什么会发生,但我不知道如何避免它.
我有一些函数,我require在node.js,我想传递一个redis对象来获取/设置一些数据,如果我最终使用某种类型的回调,这可能会复制这种情况.
有没有办法恢复这个价值?
它的内部setTimeout()是调用你的匿名函数function() { return num + 99; },因此该函数的返回值进入setTimeout()忽略的位置.
该two()函数没有返回值,因此当one()从调用返回返回值时two(),该返回值为undefined.
请注意,two()函数体内没有返回值:
function two(num) {
// return num + 99; << this works
setTimeout(function() { return num + 99; }, 1000); // << this doesn't
};
Run Code Online (Sandbox Code Playgroud)
return传递给匿名回调的语句在完成执行setTimeout()后的某个时间two()执行,因此它与返回值无关two().