无法导出函数expressjs/requestjs中的变量

Unable to export variables within function expressjs/requestjs

本文关键字:requestjs 变量 expressjs 函数      更新时间:2023-09-26

我的导出代码

//export.js    
var express = require('express'),
    fs      = require('fs'),
    request = require('request'),
    cheerio = require('cheerio'),
    app     = express();
    var episode = [],
        title = [],
        synopsis = [],
        reviews = [],
        date = [];
exports.showGrab = function(url,response){
    request(url,response, function(error, response, html){
       var $ = cheerio.load(html),
            shows = {bitten:['http://www.tv.com/shows/bitten-2013/episodes/']};
        $('.no_toggle._clearfix').eq(1).filter(function(){
            var data = $(this);
                episode = data.children().first().children().last().text();
                exports.episode = episode;
        })
    })
}
console.log(episode); // => defined as [] not the value given in the function 
//import.js
var express = require('express'),
    fs      = require('fs'),
    request = require('request'),
    cheerio = require('cheerio'),
    app     = express(),
    server  = require('./export');

console.log(server.episode);
server.showGrab('http://www.tv.com/shows/bitten-2013/episodes/');

在导入脚本中使用函数server.showGrab可以正常工作,但我需要访问导入脚本中show grab函数中的变量。我相信这个问题可以归结为范围问题,如果我在函数之外导出变量,它们会很好地工作,但我的印象是,以我所做的方式声明变量会使它们成为全局变量。如何在导入脚本中运行此函数,同时仍向其传递url并返回episode进行操作?

@Pointy您是对的,导入脚本在定义之前调用了该值

//import.js
if (server.episode === undefined){
var test = setInterval(function(){
        if (server.episode != undefined){
            clearInterval(test);
        }
        console.log(server.episode);
    }, 1000);
}

由于某种原因,在if中使用else而不是包装if不起作用。