gpt4 book ai didi

javascript - JQuery 完成时不停止执行

转载 作者:行者123 更新时间:2023-12-03 02:28:52 25 4
gpt4 key购买 nike

我有这段代码,我想做的是仅在 function1 完成并返回我需要的标志后执行 function0,但我无法做到这一点。 function0 上的when().done() 始终在第一次运行时执行,并使我的代码的其余部分执行。

函数0总结

function0: function(e) {
e.preventDefault();

var valid = false;

var dfd = $.Deferred();
$.when(function1(e)).done(function(v){
valid = v; // -> right here valid is undefined
dfd.resolve();
});

dfd.promise();

if(!valid) {
alertSomething();
return;
}

keepExecutingCode();
},

函数1总结

function1: function(e){
e.preventDefault();
var df = $.Deferred();
var flag = true;
App.resetDiv('#div');
getSomething();
getSomething2();
$.when(getSomething3()).done(function(){
$.when(getSomething4()).done(function(){
if (cond1()){
doSomething5();
if (cond2()){
$.when(doSomething6(),doSomething7()).done(function(var1, var2){
doSomething8(var1,var2);
flag = true;
updateSomething();
});
}else{
flag = false;
updateSomething2();
}
}else{ flag2 = false;
showSomething();
flag3 = false;
}
df.resolve(flag);
});
//PROBLEM 1 RIGHT HERE
//df.promise();
//return flag;
});
// it should be
return df.promise();
},

我知道问题可能出在其他函数的延迟上,因为在 function0 内部,即使没有 v 值,它也总是会进行解析,并且一旦它达到 if(!valid) valid未定义。

我做错了什么?

Update - It's solved

function0: function(e) {
e.preventDefault();

var valid = false;

var dfd = $.Deferred();
//$.when(function1(e)).done(function(v){
// had to change .done to .then
$.when(function1(e)).then(function(v){
valid = v; // -> right here valid is undefined
if(!valid) {
alertSomething();
return;
}
// had to change the scope and make it inside the .then so that it only executes when I have the value
keepExecutingCode();
dfd.resolve();
});

dfd.promise();


},

还必须将 function1 中的 .done 更改为 .then

非常感谢;)

最佳答案

看来您没有捕获延迟的错误事件。 (取决于您的 jQuery 版本)您可以通过两种方式执行此操作:

  • 使用.fail -回调
    在这里,您将其添加到完成回调之后,以便您可以响应延迟的拒绝回调
  • 将 .done 替换为 .then并使用第二个回调
    在这里,您只需将处理错误的函数插入到 then 函数的第二个参数

关于javascript - JQuery 完成时不停止执行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48825700/

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