强制Javascript函数调用等待上一个函数调用完成

mwi*_*ams 12 javascript jquery

我有一个简单的Javascript函数:

makeRequest();
Run Code Online (Sandbox Code Playgroud)

它做了很多东西,并将大量内容放入DOM中.

我做了几个电话:

makeRequest('food');
makeRequest('shopping');
Run Code Online (Sandbox Code Playgroud)

但是,它们都发射得太快,以至于它们踩着对方的脚趾.最终我需要它具有的功能.

makeRequest('food');
wait....
makeRequest('shopping'); only if makeRequest('food') has finished
Run Code Online (Sandbox Code Playgroud)

关于让这些只能一次执行一个的想法?

谢谢!

Vin*_*ert 15

如果这些函数实际上执行了一个AJAX请求,那么最好让它们保持异步.您可以制作同步AJAX请求,但它会阻止浏览器响应并导致糟糕的用户体验.

如果这些AJAX请求是依次相互依赖的,那么你需要调查你的函数以查看它是否提供了一个回调机制.

makeRequest('food', function()
{
    // called when food request is done
    makeRequest('shopping');
});
Run Code Online (Sandbox Code Playgroud)

使用jQuery,它看起来像那样

$.get("/food", function(food)
{
    // do something with food

    $.get("/shopping", function(shopping)
    {
        // do something with shopping
    });
});
Run Code Online (Sandbox Code Playgroud)