0

我是 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);
4

3 回答 3

2

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

你应该把你console.log的电话放在里面restler.get

于 2013-07-26T03:26:24.420 回答
0

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

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

于 2013-07-26T04:35:00.087 回答
0

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

当您在 JS 中使用延续(尤其是 node.js 中的要求)时,您确实需要了解它们。

于 2013-07-26T03:37:42.153 回答