【发布时间】:2021-10-07 01:44:07
【问题描述】:
在下面的sn-p中,我希望能够在请求函数之外访问locationArray,我明白在下面的代码中它为什么不起作用,但是,我尝试了许多不同的方法来访问大批。我尝试过使用 Promise、回调函数等,但是,它们似乎都不起作用。
关于如何做到这一点的任何其他想法?即使对我尝试过的方法持开放态度,因为此时一切都值得一试。
request(process.env.RESOURCE_SHEET, (error, response, html) => {
var locationArray = new Array
if(!error && response.statusCode == 200) {
const $ = cheerio.load(html);
$("h3").each((i, lle) => {
const location = $(lle).text();
if(location.includes("Kansas")) return;
if(location.includes("In Stock")) {
var level = location + " ✅";
} else {
var level = location + " ❌";
}
locationArray.push(level);
});
}
console.log(locationArray) // Output 1: [level1,level2,level3,leveletc]
});
console.log(locationArray) // Output 2: []
【问题讨论】:
-
请求是异步的,因此您不能访问请求之外的变量,除非您使用事件或其他在请求之后发生的异步活动。您可以将响应包装在 Promise 中,但传递给 Promise 的函数只会在异步活动完成时解析或拒绝,前提是您编写正确。
标签: javascript asynchronous callback request es6-promise