Потерянные события с записью в память

Большинство методов jQuery Ajax возвращают объект XMLHttpRequest (или эквивалентный), поэтому вы можете просто использовать abort().

См. документацию:

  • abort Метод ( MSDN ). Отменяет текущий HTTP-запрос.
  • abort () ( MDN ). Если запрос уже отправлен, этот метод прервет запрос.
var xhr = $.ajax({
    type: "POST",
    url: "some.php",
    data: "name=John&location=Boston",
    success: function(msg){
       alert( "Data Saved: " + msg );
    }
});

//kill the request
xhr.abort()

UPDATE: с jQuery 1.5 возвращаемый объект является оболочкой для собственного объекта XMLHttpRequest, называемого jqXHR. Этот объект, как представляется, раскрывает все собственные свойства и методы, поэтому приведенный выше пример все еще работает. См. Объект jqXHR (документация jQuery API).

ОБНОВЛЕНИЕ 2: Начиная с jQuery 3, метод ajax теперь возвращает обещание с помощью дополнительных методов ( например, прерывание), поэтому приведенный выше код все еще работает, хотя возвращаемый объект уже не является xhr. См. Блог 3.0 здесь .

ОБНОВЛЕНИЕ 3: xhr.abort() все еще работает на jQuery 3.x. Не предполагайте, что обновление 2 верное. Дополнительная информация о репозитории jQuery Github .

0
задан Alois Kraus 16 January 2019 в 16:03
поделиться

1 ответ

Поскольку существует способ избавиться от этих ложных пропущенных событий, я решил сбросить счетчик потерянных событий в файле ETL напрямую:

Если вы вызываете этот метод, вы можете сбросить счетчик LostEvents, который является int:

// Lost event offset is taken from _TRACE_LOGFILE_HEADER32/64 which is the same for x64 and x86
const int LostEventOffset = 0x98;

private static void ResetLostEvents(string etlFile)
{
    using (var file = File.OpenWrite(etlFile))
    {
        file.Seek(LostEventOffset, SeekOrigin.Begin);
        using (BinaryWriter overwriter = new BinaryWriter(file))
        {
            overwriter.Write((int)0);
        }
    }
}

Это было проверено на Win7 и 10 x86, x64, которые работают для всех файлов ETL, которые я получил до сих пор.

0
ответ дан Alois Kraus 16 January 2019 в 16:03
поделиться