gpt4 book ai didi

javascript - 是否可以将 jQuery $.when 与 bool 标志一起使用?

转载 作者:行者123 更新时间:2023-11-30 10:37:17 24 4
gpt4 key购买 nike

我有一个 ajax 调用,当且仅当在代码中的其他地方设置了特定标志时才应该执行该调用。

我不能直接在设置标志的函数中进行此调用,因为我不需要每次设置标志时都进行此调用。

这有点难以解释,所以我能想到的最好的例子是这样的:

当且仅当她在奶奶家时,狼才能吃掉红帽子。然而并不是每次她来这家,都有狼来吃她。每次她在这里,狼在这里,从另一边,狼都会吃掉她。

我想知道,我可以为此目的使用 $.when(theFlag) 吗?

var theRedHatIsHere = false;

function waitForRedHat()
{
.....
theRedHatIsHere = true;
}

function wolfIsHungry(link)
{
$.when(theRedHatIsHere)
{
$.ajax({
type: "POST",
url: "php/eatredhat.php?",
data: ddd,
async: false,
success: function(msg){
console.log( "Eaten" );
window.location.href = link;
}
});
}
}

最佳答案

使用自定义事件或发布/订阅模式,而不是费力 $.when 做一些不应该做的事情。这是一个众所周知的模式,它有助于解耦您的组件,并且您可以灵活地拥有多个事件订阅者,在某个时刻停止监听事件或仅对事件作出 react 一次。

使用 jQuery.on 订阅自定义事件

$(document).on('WolfIsHome', function(){
$(document).on('WolfGotHungry', function(){
$(document).on('RedHatArrived', function()
$.ajax({
type: "POST",
url: "php/eatredhat.php?",
data: ddd,
async: false,
success: function(msg){
console.log( "Eaten" );
window.location.href = link;
}
});
}
});
});

每当狼饿了,而不是设置那个 bool 值只是引发那个自定义事件:

$(document).trigger("WolfIsHome"); // trigger in your logic when the wolf is home

$(document).trigger("WolfGotHungry"); //trigger wolfhungry which will register a subscriber to RedHat arrival event

//and somewhere else in the code
// if RedHatArrived and Wolf is not hungry then nothing will happen
// because there won't be registered subscribers to her arrival
$(document).trigger("RedHatArrived");

关于javascript - 是否可以将 jQuery $.when 与 bool 标志一起使用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13217494/

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