运行时,下面显示的代码会记录" []"。我相信这是因为在调用console.log方法时请求函数尚未完成。
var urlArray = []
request('http://www.example.com', function (error, response, body) {
urlArray.push("example.com")
}
console.log(urlArray)
如何设置条件以确保请求功能完整。伪代码将是:
if request function is complete{
console.log(urlArray)
}
如果这不是最佳方式,那是什么?
答案 0 :(得分:0)
首先,如果你以非同步方式运行它,请求行完成后会立即执行请求行之后的行,但这不是值得推荐的。其次,运行异步,你会得到一个回调或一个承诺,取决于你正在使用的库来执行请求,即使你使用纯JS,你可以选择设置错误和成功状态的回调,这将被执行只有在请求收到回复后。 我建议阅读一些关于ajax和promises的内容。
http://www.w3schools.com/ajax/ajax_xmlhttprequest_send.asp
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Promise
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Promise/then
看一下你提供的代码,它似乎只是一个概念或伪代码,它永远不会运行并抛出所有类型的错误和异常。