Попробуйте это -
var fileDownload = require('react-file-download');
var promise = new Promise((resolve, reject) => {
fileDownload(data, 'filename.csv');
// wait 2 sec then resolve
setTimeout(() => { resolve(true) }, 2000);
});
Тогда вы можете сделать -
await promise().then(result => console.log(result)).catch(err => console.log(err.message));
Обработчик HTTP ASP.NET - это процесс (часто называемый «конечной точкой»), который выполняется в ответ на запрос, сделанный к веб-приложению ASP.NET. . Наиболее распространенный обработчик - обработчик страницы ASP.NET, обрабатывающий файлы .aspx. Когда пользователи запрашивают файл .aspx, запрос обрабатывается страницей через обработчик страницы. Вы можете создать свои собственные обработчики HTTP, которые отображают пользовательский вывод в браузере.
Типичные варианты использования настраиваемых обработчиков HTTP включают следующее:
HTTP-модуль - это сборка, которая вызывается при каждом запросе вашего приложения. Модули HTTP вызываются как часть конвейера запросов ASP.NET и имеют доступ к событиям жизненного цикла на протяжении всего запроса. Модули HTTP позволяют проверять входящие и исходящие запросы и предпринимать действия на основе запроса.
Типичные варианты использования модулей HTTP включают следующее:
From: http: // msdn. microsoft.com/en-us/library/bb398986.aspx[1293 impression
Как указано здесь , HttpModules - это простые классы, которые могут подключаться к конвейеру обработки запросов, тогда как HttpHandlers отличаются от HttpModules не только из-за их позиций в конвейере обработки запросов, но и потому, что они должны быть сопоставлены с определенными расширениями файлов.
IHttpModule
дает вам гораздо больше контроля, вы можете в основном контролировать весь трафика, направленного на ваше веб-приложение. IHttpHandler
дает вам меньше контроля (трафик фильтруется до того, как он достигает вашего обработчика), но если этого достаточно для ваших нужд, тогда я не вижу смысла использовать IHttpModule
.
В любом случае, лучше всего иметь свою собственную логику в отдельном классе, а затем просто использовать этот класс из IHttpModule
или IHttpHandler
. Таким образом, вам не нужно беспокоиться о выборе одного или другого. Фактически, вы можете создать дополнительный класс, который реализует [114] 232 и IHttpHandler
и IHttpModule
, а затем решить, что использовать, установив его в Web.config
.
Модули предназначены для обработки событий, вызванных приложением, до и после того, как запрос фактически обработан обработчиком. С другой стороны, обработчикам не предоставляется возможность подписаться на какие-либо события приложения, а вместо этого просто вызывается их метод ProcessRequest для «основной» работы по обработке конкретного запроса.
Посмотрите на эта документация от Microsoft (примерно на полпути вниз по странице в разделе «Запрос обрабатывается конвейером HttpApplication»):
http://msdn.microsoft.com/en-us/library/bb470252.aspx
На шаге 15 вы можете увидеть, где обработчик получает возможность выполнить. Все события до и после этого шага доступны для перехвата модулями, но не обработчиками.
В зависимости от того, каких конкретных функций вы пытаетесь достичь, вы можете использовать либо обработчик, либо модуль для реализации обработчика выгрузки. Вы могли бы даже использовать оба.
Что-то, что можно рассмотреть, может использовать обработчик загрузки, который уже написан.
Вот бесплатный и открытый исходный код:
http://www.brettle.com/neatupload
Вот коммерческий:
http://krystalware.com/Products/SlickUpload/
Если вы посмотрите документацию для NeatUpload, вы увидите, что для этого требуется настроить модуль.
15 секунд - это красивый небольшой учебник с практическим примером