var bool = true;
while(bool){
var ret='';
$.ajaxSettings.async = false;
$.getJSON(Url, requestData, function (rv) {
var response = rv.Value;
ret = response.Process;
if (ret == 100) {
console.log("Done!");
bool = false;
}
});
console.log('已完成:'+ret+'%!');
$.ajaxSettings.async = true;
}
var getPrecent = function(){
$.getJSON(Url, requestData, function (rv) {
var response = rv.Value;
ret = response.Process;
if (ret == 100) {
console.log("Done!,已完成100%");
}else{
console.log("已完成"+ret+"%");
setTimeout(getPrecent,200);
}
});
};
getPrecent();
1
loy6491 2017-07-14 21:39:41 +08:00
1. 看看请求成功了没
2. 看看 ret 是 100 么 3. 不要用同步的 ajax 这也能调一下午 |
2
boogiefer 2017-07-14 21:42:42 +08:00 via iPhone
while 必须 写到回调里去
|
3
sunsai 2017-07-14 21:43:13 +08:00 via Android
while 循环是同步的,getjson 是异步的,而且 js 是单线程的,这样就会一直 while 循环,都没有机会执行回调,也就无法退出循环了
|
4
sunsai 2017-07-14 21:44:39 +08:00 via Android
我的错了
|
5
lanwairen123 OP |
6
lanwairen123 OP @boogiefer while 循环需要在外面,因为要不断调用 getjson 获取返回值。
|
7
lanwairen123 OP @sunsai $.ajaxSettings.async = false; 设置成同步模式了。
|
8
wly19960911 2017-07-14 21:50:14 +08:00 via Android
打断点不能出来?
另外采取二楼意见,把 while 循环调用改成递归回调 if ( ret ==100 ){ … }else{ 再执行一次 getjson 的 function } (手机码,不要介意。) |
9
lanwairen123 OP @wly19960911 如果可以的话,能给个示范的代码吗,之前学过点 php,遇到 javascript 彻底懵了,各种变量的作用域,各种 undefined ……比如上面代码里面 ret 在回调里面有值,但是到外面又取不到值了,不知道怎么回事。
|
10
tsotsi 2017-07-14 22:01:22 +08:00 2
```javascript
var bool = true; var ret=''; $.ajaxSettings.async = false; while(bool){ $.getJSON(Url, requestData, function (rv) { var response = rv.Value; ret = response.Process; if (ret == 100) { console.log("Done!"); bool = false; } }); } console.log('已完成:'+ret+'%!'); $.ajaxSettings.async = true; ;!function(){ var doneCallback = function(){console.log('已完成:100%!');}; var getPrecent = function(){ $.getJSON(Url, requestData, function (rv) { var response = rv.Value; ret = response.Process; if (ret == 100) { console.log("Done!"); doneCallback(); }else{ setTimeout(getPrecent,200); } }); }; }(); ``` |
11
wly19960911 2017-07-14 22:03:49 +08:00 via Android 1
@lanwairen123 10 楼演示了,手机不好码代码,你把他的格式化下就好,
|
12
lanwairen123 OP |
13
ode 2017-07-14 22:25:25 +08:00 via iPhone 1
槽点太多 先把基础看了再说 不要以为会 php 就可以直接上手 js 否则会掉进坑里
|
14
lanwairen123 OP @ode 已经掉坑里了,正在学怎么爬出来……
|
15
LioMore 2017-07-15 00:34:21 +08:00
哈哈哈哈哈哈哈哈哈哈哈
“不要以为会 php 就可以直接上手” 赞成 |
17
lavawong 2017-07-25 08:00:34 +08:00 via iPhone
又一个掉坑里的
|