gpt4 book ai didi

javascript - 仅 Chrome : ajax freezing my javascript execution

转载 作者:行者123 更新时间:2023-12-02 16:25:56 26 4
gpt4 key购买 nike

Ajax 意味着异步,但它似乎停止了我的 JavaScript 执行,或者至少暂停它并在响应时恢复。

HTML 值

 <input value="foo" data-loading-text="bar" class="foo">

扩展 jquery -->

$.fn.bootstrapButton= function(type){
$el = $(this);
loadingText = $el.attr("data-loading-text");
currentValue = $el.val();
if(type === "loading")
$el.attr("data-loading-text",currentValue)
.val(loadingText)
.prop("disabled", true)
else if( type === "reset")
$el.val(loadingText)
.prop("disabled", false)
.attr("data-loading-text", currentValue)
}

函数调用-->

save= function (name){
$save = $(".ok")
$save.bootstrapButton("loading")
$.ajax({
type: 'POST'
url: '/server'
cache: false
dataType: 'json'
data:"ss"
success: function(response){
alert("success")
}).always(function(){
$save.bootstrapButton("reset")
})
}

我正在扩展 bootstrap 的按钮,因为 jquery UI 的按钮问题。但是 - 当执行时,我永远不会看到加载文本,直到 ajax 请求完成!达常见问题解答!异步不是真正的异步吗?

顺便说一句,通过这个小修改,代码可以正常工作(我可以看到加载文本)。

save= function (name){
$save = $(".ok")
$save.bootstrapButton("loading")
setTimeout(funtion(){
$.ajax({
type: 'POST'
url: '/server'
cache: false
dataType: 'json'
data:"ss"
success: function(response){
alert("success")
}).always(function(){
$save.bootstrapButton("reset")
})
},100)
}

即,有 100 毫秒的延迟,加载文本出现!,什么给出了?

最佳答案

构造:

$.ajax({
....
}).always(function(){
$save.bootstrapButton("reset")
})

说:“执行此 Ajax 命令,完成后始终运行此匿名函数。

所以你已经明确地说,“等到 Ajax 调用完成”,它就可以工作了。

关于javascript - 仅 Chrome : ajax freezing my javascript execution,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28699128/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com