ASPNET MVC: Способ выяснить маршрут ссылающегося домена (так)?

async await

Вы можете написать свой код с помощью async await. Самое интересное, что вы можете обрабатывать все ошибки, а значение автоматически возвращается с обещаниями.

app.get('/getResults', async function(req, res, next) { //<-- notice the async here
 try{
  const val1 = await scraper.getPrice(results, url, nights)
  const val2 = await scraper.getPrice(results, url, nights)
  const val3 = await scraper.getPrice(results, url, nights)
  const val4 = await scraper.getPrice(results, url, nights)
  return res.send([val1, val2, val3, val4])
 } catch(err) {
   res.status(500).send(err)
 }
})

p-limit

Вы можете использовать пакет с именем p-limit, который запускает несколько возвратов обещаний & amp; асинхронные функции с ограниченным параллелизмом.

const pLimit = require('p-limit');

const limit = pLimit(1);

const input = [
    limit(() => scraper.getPrice(results, url, nights)),
    limit(() => scraper.getPrice(results, url, nights)),
    limit(() => scraper.getPrice(results, url, nights))
];

(async () => {
    // Only one promise is run at once
    const result = await Promise.all(input);
    console.log(result);
})();

for..of loop

Вы можете оптимизировать эти коды и уменьшить дублирование кода. С async..await и for..of вы можете уменьшить код еще больше,

// assuming you have these urls
const urls = [
 'http://example.com', 'http://example.com',  'http://example.com'
];

const results = []
for(let url of urls){
  const data = await scraper.getPrice(results, url, nights);
  results.push(data)
}
console.log(results)
7
задан Peter Mounce 19 January 2009 в 11:46
поделиться

1 ответ

MVC Contrib включает дополнительный метод в Строку для получения маршрута (а именно, в здесь). В теории это позволило бы Вам сделать

RouteData referrer = Request.UrlReferrer.PathAndQuery.Route();

или, конечно, оберните это в дополнительном методе на HttpRequest, таким образом, можно просто сделать

RouteData referrer = Request.ReferrerRoute();

Однако это предназначается для поблочного тестирования и использует Насмешки Носорога для создания HttpContextBase, которого требует GetRouteData (). Хорошие новости - то, что этому, кажется, сходит с рук насмешка очень небольшого количества его, таким образом, Вы смогли избегать Насмешек Носорога при создании собственного класса FakeHttpContext, полученного из HttpContextBase.

2
ответ дан 7 December 2019 в 18:46
поделиться
Другие вопросы по тегам:

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