Node.js 如何在NodeJS中正确使用回调函数

Node.js 如何在NodeJS中正确使用回调函数,node.js,http,callback,request,Node.js,Http,Callback,Request,好的。尝试在这里提出一个非常简单的请求。第一个使用异步Nodejs的代码。根据我检查过的所有地方,我都做对了。他们没有一个人真正解释回调是如何工作的,他们只是说该做什么,所以我无法凭直觉理解 const request = require("request"); function fetchData(url, json, callback) { request({ url: url, json: json, method: "get"

好的。尝试在这里提出一个非常简单的请求。第一个使用异步Nodejs的代码。根据我检查过的所有地方,我都做对了。他们没有一个人真正解释回调是如何工作的,他们只是说该做什么,所以我无法凭直觉理解

const request = require("request");

function fetchData(url, json, callback) {
    request({
        url: url,
        json: json,
        method: "get"
    }, callback(error, response, body))
}

console.log(fetchData("https://www.yahoo.com", false, function(error, response, body) {
    if(!error && response.statusCode == 200) {
        return body;
    } else {
        return error;
    }
}));


谢谢

两件事-首先,将回调变量传递到
request()
,不要调用函数

callback
vs
callback()

其次,不能使用回调函数的返回值。从回调函数内部调用console.log()

带有更改的代码:

const request = require("request");

function fetchData(url, json, callback) {
    request({
        url: url,
        json: json,
        method: "get"
    }, callback)
}

fetchData("http://www.yahoo.com", false, function(error, response, body) {
    if(!error && response.statusCode == 200) {
        console.log(body);
    } else {
        console.log(error);
    }
}));

有两件事-首先,将回调变量传递到
request()
,不要调用该函数

callback
vs
callback()

其次,不能使用回调函数的返回值。从回调函数内部调用console.log()

带有更改的代码:

const request = require("request");

function fetchData(url, json, callback) {
    request({
        url: url,
        json: json,
        method: "get"
    }, callback)
}

fetchData("http://www.yahoo.com", false, function(error, response, body) {
    if(!error && response.statusCode == 200) {
        console.log(body);
    } else {
        console.log(error);
    }
}));

非常感谢。将验证它是否很快起作用。最终目标是从站点返回html。您是说console.log将在回调中实现这一点?@JoelMorris发生的事情是,您能够在回调函数中使用请求的结果。这意味着您可以将其传递给执行输出的函数,如
console.log
,或回调中需要的任何其他函数。回调由
request()
函数调用,因此从回调返回的任何内容都将被丢弃,因为request函数不知道如何处理它。通常,如果回调函数可以返回值,文档将告诉您回调函数可以或应该返回什么。谢谢。将验证它是否很快起作用。最终目标是从站点返回html。您是说console.log将在回调中实现这一点?@JoelMorris发生的事情是,您能够在回调函数中使用请求的结果。这意味着您可以将其传递给执行输出的函数,如
console.log
,或回调中需要的任何其他函数。回调由
request()
函数调用,因此从回调返回的任何内容都将被丢弃,因为request函数不知道如何处理它。通常,如果回调函数可以返回值,文档将告诉您回调函数可以或应该返回什么。