gpt4 book ai didi

javascript - Nodejs 中异步函数的返回值

转载 作者:行者123 更新时间:2023-12-02 16:49:24 28 4
gpt4 key购买 nike

嗨,我正在使用 Node 制作网络抓取工具,但代码总是返回“未定义”,我尝试使用“异步”模块,但结果是相同的。

哪里出错了?

var request = require('request');
var cheerio = require('cheerio');

//this function returns a info of a movie
var get_info = function (url){
var meta = {
title : '',
year : '',
length : '',
gen : '',
details : '',
raiting : '',
};

request.get(url, function (error, response, html){
if (!error && response.statusCode == 200){
var $ = cheerio.load(html);
meta.title = $('.movie-title h1').find('a').text();
meta.year = $('.release').text();
meta.length = $('.running_time').text().replace('minutos', '');
meta.gen = $('.btn-tags-list').find('a').first().text();
meta.details = $('.description').find('p').text();
meta.raiting = $('.movie-rating-average').find('.average').text();
};
});
return meta;
};

谢谢。

最佳答案

您将使用回调,因为 get 是异步请求:

var get_info = function (url, callback){
var meta = {
title : '',
year : '',
length : '',
gen : '',
details : '',
raiting : '',
};

request.get(url, function (error, response, html){
if (!error && response.statusCode == 200){
var $ = cheerio.load(html);
meta.title = $('.movie-title h1').find('a').text();
meta.year = $('.release').text();
meta.length = $('.running_time').text().replace('minutos', '');
meta.gen = $('.btn-tags-list').find('a').first().text();
meta.details = $('.description').find('p').text();
meta.raiting = $('.movie-rating-average').find('.average').text();
callback(meta);
};
});

};

并使用它:

get_info(url, function(meta) {
console.log(meta);
});

关于javascript - Nodejs 中异步函数的返回值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26805964/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com