推送到在回调中不起作用的数组

Pushing to an array not working in callback

查看代码中的注释以了解 happening/not 实际发生了什么。基本上在函数内, array.push() 方法似乎不起作用,我无法理解为什么。任何帮助将不胜感激。

 var locationArray = new Array;

        request(process.env.RESOURCE_SHEET, (error, response, html) => {
            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); // This doesn't push to the array
                });
            } 
        });
        locationArray.push("test") // This pushes to the array

        console.log(locationArray) // Output: "test"

感谢 Harsh Saini。

他的回复:request 异步工作,你应该尝试在请求回调中控制数组。

工作代码:

var locationArray = new Array;

request(process.env.RESOURCE_SHEET, (error, response, html) => {
    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)
});