1

如何确保正在调用回调代码。

确保回调在检查 gotMinPremium 或 gotMaxPremium 之前发出。

我不想使用 setTimeOut 函数。

setTimeOut 函数使脚本始终运行。还有其他方法吗?

谢谢

4

1 回答 1

2

您的setTimeout调用不起作用,因为调用setTimeout不会阻止它执行之后的所有其他内容,它只是注册一个要在将来某个时间运行的代码块,然后立即继续执行以下代码setTimeout

使用延迟对象,您可以启动两个 AJAX 调用并等待它们都完成,然后再继续:

var getMin = $.post(...);
var getMax = $.post(...);

$.when(getMin, getMax).done(function(d1, d2) {
     // d1 and d2 will contain the result of the two AJAX calls
     MinPremium = d1.MinPremium;
     MaxPremium = d2.MaxPremium;

     ...
});

请注意,这将始终进行两个 AJAX 调用(并使它们并行进行。或者:

$.post(...).done(function(data) {
    minPremium = data.MinPremium;

    // handle your minimum test here
    ...

    $.post(...).done(function(data) {
        maxPremium = data.MaxPremium;

        // handle maximum test here
        ...
    });
});

FWIW,有什么理由不能让一个 AJAX 调用返回两个值吗?

于 2013-06-03T09:30:17.357 回答