不太会表达。我还是直接贴代码
```javascript
var results = "";
request({
method: "GET"
url: "www.xxx.com"
}, function (data) {
results = data;
});
console.log(results) // 这里因为回调的原因总是空的。
```
有什么方法保证回调之后数据能同步...
1
Phariel 2015-06-11 20:49:37 +08:00
sync or promise
|
2
yangxiongguo 2015-06-11 20:49:53 +08:00
最暴力的方法 async:false
|
3
clink8001 2015-06-11 20:54:58 +08:00
var XmlHttp;
XmlHttp = new ActiveXObject("Msxml2.XMLHTTP.3.0"); function send() { XmlHttp.onreadystatechange = doHttpReadyStateChange; XmlHttp.open("GET", "http://localhost/sample.xml", true); XmlHttp.send(); } function doHttpReadyStateChange() { if (XmlHttp.readyState == 4) { alert("Done"); } } 楼主,当 XmlHttp.readyState 的值为4的时候,数据才会返回。你直接调用有可能数据还没返回。 |
4
yushiro 2015-06-11 21:13:27 +08:00 via iPhone
把后续代码写在ajax的success的callback里面啊,就不会有问题了。
|
5
sarices 2015-06-11 21:39:46 +08:00
1 改成同步
2 把console.log放到callback里面 |
6
learnshare 2015-06-11 21:39:54 +08:00
console.log(results) 应该放在这里:
}, function (data) { results = data; ****console.log(results); }); |
7
lixia625 2015-06-11 21:50:00 +08:00 via Android
Promise
|
8
guchengf 2015-06-11 22:09:49 +08:00
你都说了是“回调”了,人家还没回,你就调了
|
10
w88975 2015-06-11 23:42:53 +08:00
但凡异步的都必须在回调里做操作
|
11
haozhang OP 本来是在写爬虫遇到的问题,大致抽象了出来,我全用async解决了,感谢以上各位的回复🙏。
|
12
holulu 2015-06-12 07:55:22 +08:00
ES 6 的 generator ,局部的同步代码
|