无法更改javascript函数中的变量值

时间:2013-07-26 03:20:14

标签: javascript

我是Javascript的新手,我对下面的代码感到困惑几个小时。 我想知道为什么我不能将结果的值赋给htmlContent。 谢谢!

var htmlContent = fs.readFileSync(program.file);

restler.get('http://google.com').on('complete', function(result) {
    if (result instanceof Error) {
        util.puts('Error: ' + result.message);
    } else {
       htmlContent = result;
    }
});
console.log(htmlContent);

3 个答案:

答案 0 :(得分:2)

这里的问题是以restler.get开头的行在console.log之前开始,但它不一定在它之前完成。

您应该将console.log置于restler.get来电。

答案 1 :(得分:0)

我会在JS中查找期货和承诺的概念,这可能有助于澄清一些基本面: http://monochrome.sutic.nu/2012/04/06/javascript-futures.html

当你在JS中使用continuation(特别是node.js中的一个要求)时,你真的需要了解它们。

答案 2 :(得分:0)

这里,.on()中的函数将被异步调用(简单来说,它将在“完成”事件发生时执行,即稍后某些时间)并且您正在使用console.log(htmlContent)是常规函数调用,所以你不能以这种方式在函数内设置htmlContent值。

如果要在任何其他函数中使用result值,则应将此值传递给下一个函数。我希望这会奏效。