NPM请求
所以我现在正在使用Request NPM模块。
request( URL, function (error, response, body) {
console.log(body);
var bod = JSON.parse(body);
console.log(bod.url);
});
我想在EJS文件中使用bod.url参数。
console.log(bod.url)部分工作正常,它打印出我正在寻找的东西。
我希望做类似以下的事情。
request( URL, function (error, response, body) {
console.log(body);
var bod = JSON.parse(body);
console.log(bod.url);
var bod2 = bod.url;
});
res.render("image",{url:bod2});
但它一直说bod2是未定义的。
如果我将bod2变为请求函数之外的变量,那么我的EJS模板会正确呈现它。
我知道我错过了一些基本的东西,但我不知道我在哪里错了。
更新
如果我做了以下它可以工作......但这是一条路线内的不良做法吗?
request( URL, function (error, response, body) {
console.log(body);
var bod = JSON.parse(body);
console.log(bod.url);
var bod2 = bod.url;
res.render("image",{url:bod2});
});
回答如下:
这是因为变量的范围,有时会发生的问题。因此,您可以使用以下代码来处理此类情况。
request( URL, function (error, response, body) {
console.log(body);
var bod = JSON.parse(body);
console.log(bod.url);
var bod2 = bod.url;
res.render("image",{url:bod2});
});
或者你可以在请求块之上声明bod2
var bod2;
return new Promise(resolve => {
request( URL, function (error, response, body) {
console.log(body);
var bod = JSON.parse(body);
console.log(bod.url);
this.bod2 = bod.url;
}, function (error, response, body) {
if(!error)
resolve(body);
});