首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >如何从回调中返回函数?

如何从回调中返回函数?
EN

Stack Overflow用户
提问于 2013-07-10 06:58:20
回答 2查看 272关注 0票数 0

如果我有以下代码:

代码语言:javascript
代码运行次数:0
运行
复制
var content;
var f = fs.readFile('./index.html', function read(err, data) {
    if (err) {
        throw err;
    }
    content = data;
    return console.log(content);
});

f();

我得到了以下信息:

代码语言:javascript
代码运行次数:0
运行
复制
f();
^
TypeError: undefined is not a function

如何返回一个未定义的函数?

在更大的上下文中,我真正的问题是下面的https://gist.github.com/jrm2k6/5962230

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-07-10 07:53:10

你不能从回调中有效地return你的代码。

在回调中使用return

  1. 不会向您的代码返回值。fs.readFile()会调用回调函数本身,因此会将return值提供给它。为了让您的代码接收它,fs.readFile()必须return它从回调中获得的值,但它没有。
  2. ,因为fs.readFile()是异步的,所以它实际上不能。

代码语言:javascript
代码运行次数:0
运行
复制
1. "Present"

变量内容;var f= fs.readFile('./index.html',/* ... */);f();

2.“未来”

/* ... */函数read(err,data) { if (err) {抛出错误;} content = data;return console.log(content);} /* ... */

您不能在“现在”中使用来自“未来”的值--或者,在这一点上,使用“过去”。

这通常会导致继续使用callback模式,而不是使用return。带上你的"" code

代码语言:javascript
代码运行次数:0
运行
复制
var cheerioURLContent = function (url, callback) {
    rest.get(url).on("complete", function (result) {
        callback(cheerio.load(result));
    });
};

cheerioURLContent('./index.html', function (t) {
    console.log(t);
});
票数 3
EN

Stack Overflow用户

发布于 2013-07-10 07:14:13

您可以为自定义事件分配事件处理程序,并从回调中触发(发出)事件。开始的时候有点难以理解,但是很优雅。

有关示例,请参阅Emitting event in Node.js

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/17559698

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档