如何在执行方法之前确保请求函数已完成 - javascript

时间:2015-05-21 20:12:54

标签: javascript request

运行时,下面显示的代码会记录" []"。我相信这是因为在调用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)
}

如果这不是最佳方式,那是什么?

1 个答案:

答案 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

看一下你提供的代码,它似乎只是一个概念或伪代码,它永远不会运行并抛出所有类型的错误和异常。