我在从 node 中的回调函数返回值时遇到了小麻烦.js,我会尽可能简单地解释我的情况.考虑到我有一个片段,它获取URL并点击URL并给出输出:
urllib.request(urlToCall, { wd: 'nodejs' }, function (err, data, response) {
var statusCode = response.statusCode;
finalData = getResponseJson(statusCode, data.toString());
});
我试图将其封装在函数中,并返回如下值:
function doCall(urlToCall) {
urllib.request(urlToCall, { wd: 'nodejs' }, function (err, data, response) {
var statusCode = response.statusCode;
finalData = getResponseJson(statusCode, data.toString());
return finalData;
});
}
因为在我的 node 中.js代码,我有很多if-else
语句,其中urlToCall
的值将被决定,如下所示:
if(//somecondition) {
urlToCall = //Url1;
} else if(//someother condition) {
urlToCall = //Url2;
} else {
urlToCall = //Url3;
}
问题是,urllib.request
中的所有语句都将保持不变,除了urlToCall
的值.所以我肯定需要把这些通用代码放在一个函数中.我也try 过同样的方法,但在doCall
中,我总是会返回undefined
.我试着这样:
response = doCall(urlToCall);
console.log(response) //Prints undefined
但如果我把值打印在doCall()
以内,它打印得很完美,但它总是返回undefined
.根据我的研究,我知道我们不能从回调函数返回值!(这是真的吗)?如果是的话,有谁能告诉我如何处理这种情况,因为我希望在每if-else
个块中防止重复代码.