Browser ожидает вызова ajax для завершения даже после того, как аварийное прекращение работы назвали (jQuery)

1) Вы можете использовать VideoCapture с именем filename :

имя_файла - имя открытого видеофайла (например, video.avi) или последовательность изображений (например, img_% 02d.jpg, который будет читать образцы, такие как img_00.jpg, img_01.jpg, img_02.jpg, ...)

blockquote>

2) Или просто измените имя изображение для загрузки по счетчику.

#include 
#include 
#include 
#include 

int main()
{
    std::string folder = "your_folder_with_images";
    std::string suffix = ".jpg";
    int counter = 0;

    cv::Mat myImage;

    while (1)
    {
        std::stringstream ss;
        ss << std::setw(4) << std::setfill('0') << counter; // 0000, 0001, 0002, etc...
        std::string number = ss.str();

        std::string name = folder + number + suffix;
        myImage = cv::imread(name);

        cv::imshow("HEYO", myImage);
        int c = cv::waitKey(1);

        counter++;
    }
    return 0;
}

3) Или вы можете использовать функцию glob , чтобы сохранить все имена файлов, соответствующие заданному шаблону в векторе, а затем сканировать вектор. Это будет работать и для несколких чисел.

#include 
using namespace cv;

int main()
{
    String folder = "your_folder_with_images/*.jpg";
    vector filenames;

    glob(folder, filenames);

    Mat myImage;

    for (size_t i = 0; i < filenames.size(); ++i)
    {
        myImage = imread(filenames[i]);
        imshow("HEYO", myImage);
        int c = cv::waitKey(1);
    }

    return 0;
}

29
задан Todd Menier 2 June 2009 в 20:59
поделиться

6 ответов

Спасибо за ответы! Оказывается, я был совершенно неправ, считая, что это проблема браузера - проблема была на сервере. ASP.NET сериализует запросы одного и того же сеанса, для которых требуется состояние сеанса, поэтому в этом случае следующая страница не начала обрабатывать на сервере, пока эти запросы, инициированные ajax, не были завершены.

К сожалению, в этом случае состояние сеанса требуется в обработчике http, который отвечал на вызовы ajax. Но доступ только для чтения достаточно хорош, поэтому, помечая обработчик с помощью IReadOnlySessionState вместо IRequiresSessionState, блокировки сеанса не удерживаются, и проблема решена.

Надеюсь, эта информация окажется полезной для других.

29
ответ дан 28 November 2019 в 01:40
поделиться

Относительно собственного ответа Тодда на этот вопрос ...

У меня только что была эта проблема с PHP, и то же самое решение сработало бы. Однако мне нужна была информация на сессии. Для разработчиков PHP вы можете позвонить session_write_close() , чтобы закрыть и записать ваш сеанс в середине запроса. Это освободит сеанс для других запросов.

12
ответ дан chelmertz 14 October 2019 в 08:26
поделиться

Вы уверены, что используете асинхронный запрос? Если браузер блокирует весь запрос, вы используете синхронный запрос (параметр async имеет значение false)

2
ответ дан fbuchinger 14 October 2019 в 08:26
поделиться

Для ASP.NET MVC можно украсить контроллер следующим [SessionState(System.Web.SessionState.SessionStateBehavior.ReadOnly)].

[еще 113] информация может быть найдена здесь... http://johnculviner.com/asp-net-concurrent-ajax-requests-and-session-state-blocking/

0
ответ дан 28 November 2019 в 01:40
поделиться

Возможно, вы захотите проверить странный побочный эффект abort ()

Когда используется метод abort (), в проводнике и Mozilla срабатывает событие readystatechange. Хуже того, readyState = 4, что означает, что средний скрипт xmlhttp предполагает, что данные были загружены правильно. Это может дать очень странные эффекты.

описано здесь:

http://www.quirksmode.org/blog/archives/2005/09/xmlhttp_notes_a_1.html

3
ответ дан 28 November 2019 в 01:40
поделиться

Проблема с сервером также относится к серверу Apache / Php, с которым я работаю. Удален session_start для скрипта, который не нуждался в нем (AJAX), и все работает, как ожидалось. Спасибо Тодду, который указал на подобную проблему!

1
ответ дан 28 November 2019 в 01:40
поделиться
Другие вопросы по тегам:

Похожие вопросы: