我用原生 JS 写了三个 ajax 请求,发现代码都是重复的,于是封装成一个方法传 url 和 data 进去,但是我在写渲染 dom 时发现,ajax 返回的值还未获取到页面就已经渲染完了,我猜想是因为 ajax 异步的原因。原本我想用定时器判断值是否为空,但是感觉这样岂不是又要写三个定时器?! 所以,现在有什么好办法让 ajax 返回数据后再次渲染页面呢? 感觉自己好笨啊,想不出灵活的办法😭
1
cxe2v 2021-12-27 11:18:29 +08:00 1
js 有一个神技叫 回调函数
|
2
juzisang 2021-12-27 11:22:21 +08:00
有一个东西叫 Promise
|
3
3dwelcome 2021-12-27 11:41:34 +08:00
ajax 有同步选项的,并不全是异步。
|
4
fgwmlhdkkkw 2021-12-27 12:30:28 +08:00
await
|
5
Joker123456789 2021-12-27 12:42:09 +08:00 1
1. ajax 可以设置为同步的,sync:true
2. 你可以 把回调函数 传到你封装的 方法里去,把渲染的步骤写在回调里。 |
6
ayase252 2021-12-27 13:23:37 +08:00
|
7
Felldeadbird 2021-12-27 13:35:44 +08:00 1
办法一:请求设置会同步。 但这样页面会卡顿。
办法二:发起请求时,页面不做渲染动作。等回调有结果再渲染。 |
8
kop1989 2021-12-27 13:37:39 +08:00 1
yourAjaxFuncion(url,data,callback);
调用时: yourAjaxFunction("/xxx",jsonStr,function(){}) |
9
wunonglin 2021-12-27 13:44:55 +08:00 1
回调函数、Promise 、rxjs
我觉得你会问这个问题多半是基本有问题,恶补下 |
10
Elissa 2021-12-27 14:12:58 +08:00
Promise all
|
11
shyangs 2021-12-27 14:16:02 +08:00
看了下你的前端笔记
ES6 还没学到 Promise ? |
13
HeFengzz OP 感谢各位花费宝贵的时间回复本帖,看完深知小弟基础太差了,马上恶补
|
14
qfdk 2021-12-27 15:01:25 +08:00 via iPhone
有个叫做 document ready 等 ready 了 再 ajax 然后回掉操作
|
15
ychost 2021-12-27 15:21:13 +08:00
ajax 回调就好啦
|
16
LawlietZ 2021-12-27 16:24:10 +08:00
@qfdk 大佬,之前搜 nodejs 网关,看到了你的一个帖子 https://www.v2ex.com/t/731916 ,想交流一下,可以加个 v 吗
|
17
LawlietZ 2021-12-27 16:24:45 +08:00
@qfdk 大佬,之前搜 nodejs 网关,看到了你的一个帖子 h-ttps://www.v2ex.com/t/731916 ,想交流一下,可以加个 v 吗。
|
18
ch2 2021-12-27 16:25:14 +08:00
async,await,fetch
|
19
SxqSachin 2021-12-27 16:51:01 +08:00
sync
promise callback |
20
jeepc 2021-12-27 16:57:27 +08:00
先把同步异步搞清楚
|
22
pytth 2021-12-28 00:57:03 +08:00 via iPhone
jquery 的 send before 回调了解一下
|