setTimout()ajax请求无法成功运行

sad*_*qar 1 javascript ajax jquery

在下面的代码行中

setTimeout(Comet_IrsaliyeBelgeDurum(sGuid, belgeOid), 10000)
Run Code Online (Sandbox Code Playgroud)

不会使彗星功能等待10秒。功能正在连续运行。

setTimeout参数似乎无效。

如何使代码等待10秒?

function Comet_IrsaliyeBelgeDurum(sGuid, belgeOid) {

            var params = {
                sGuid: sGuid,
                belgeOid: belgeOid
            }

            $.ajax({
                type: "post",
                dataType: "json",
                data: params,
                url: '/BetonHareketler/H_BetonIrsaliyeBelgeDurum',
                success: function (data) {

                    if (data.isSuccess) {

                        if (data.entity == 2 || data.entity == 4) {
                            toastr.success(data.SuccessfullMessage, '??lemi Ba?ar?l?');
                        }
                        else {
                            toastr.info(data.SuccessfullMessage, '??lemi Ba?ar?l?');
                            setTimeout(Comet_IrsaliyeBelgeDurum(sGuid, belgeOid), 10000);
                        }

                    }
                    else {
                        toastr.error(data.SuccessfullMessage, '??lemi Ba?ar?s?z');
                    }

                },
                error: function (xhr, ajaxOptions, thrownError) {
                    alert("Ba?lant? Hatas?. Sayfaya Yenileyin");
                    window.location.replace(window.location.href);
                }
            });

        }
Run Code Online (Sandbox Code Playgroud)

Jos*_*eph 7

setTimeout 接受经过延迟后调用的函数。

setTimeout(Comet_IrsaliyeBelgeDurum(sGuid, belgeOid), 10000);
           ^---------------------------------------^
                      this got evaluated
Run Code Online (Sandbox Code Playgroud)

您的代码在做什么,就是调用Comet_IrsaliyeBelgeDurum并将其返回值(无论它是什么)用作“”的“函数” setTimeout

您需要做的就是将其包装在另一个函数中,如下所示:

setTimeout(function(){
  Comet_IrsaliyeBelgeDurum(sGuid, belgeOid)
}, 10000);
Run Code Online (Sandbox Code Playgroud)