gpt4 book ai didi

javascript - meteor.js - 如何从异步回调中检查值

转载 作者:搜寻专家 更新时间:2023-10-31 23:17:02 26 4
gpt4 key购买 nike

语境

我正在调用,如果成功,会将 bool 值从 false 更改为 true。然后,在这个调用之外,我检查这个 bool 值是否为真,如果是,我路由到另一个页面。

问题

控制台日志表明,在调用有时间更改 bool 值之前,正在执行检查 bool 值的 if 语句。我意识到这是因为异步性,但不确定正确的设计模式是什么。这是一个片段:

     //set variables to check if the even and user get updated or if error
var eventUpdated = false;

Meteor.call('updateEvent', eventId, eventParams, function(error, result){
if(error){
toastr.error(error.reason)
} else {
var venueId = result;
toastr.success('Event Info Updated');
eventUpdated = true;

console.log(eventUpdated)
}
});

console.log(eventUpdated)


if (eventUpdated) {
Router.go('/get-started/confirmation');
}

可能的解决方案

我猜我需要一种方法来阻止执行 if 语句,直到回调返回一个值。基于谷歌搜索,我认为这与 this 有关。但不太清楚如何实际使用它。

最佳答案

由于条件是在回调返回值之前运行的,因此您需要一个位于响应式运行的函数内部的条件。我使用了以下代码:

    Tracker.autorun(function(){
if (Session.get('userUpdated') && Session.get('passwordUpdated') && Session.get('eventUpdated')) {
Router.go('/get-started/confirmation');
}
});

您可以阅读有关 Meteor react 性的更多信息 here .

关于javascript - meteor.js - 如何从异步回调中检查值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34645783/

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