Что-то меня очень удивило сегодня. Я кулачок через кучу экспресс обработчиков маршрутов в основном выглядеть следующим образом (есть более и реальные вызовов функций, но ради воспроизводимости:Экспресс и вызов response.json в точке бесплатной моды не работает в Promise.then
app.get('/api/foo', (req, resp) => {
Promise.resolve({one: 1})
.then(data=>resp.json(data))
})
Так что я, как умный Javascript программист думает, что я могу отойти от анонимная функция и просто дайте resp.json тогда вызов функции непосредственно:
app.get('/api/foo', (req, resp) => {
Promise.resolve({one: 1})
.then(resp.json)
})
Но когда я пытаюсь, что я никогда не получить ответ и увидеть это в консоли узла:
Unhandled promise rejection (rejection id: 1): TypeError: Cannot read property 'app' of undefined
В моих глазах .then (resp.json) и .then (данные => resp.json (данные)) должны быть эквивалентны. Конечно, это предмет охвата, но мне бы хотелось объяснить и, возможно, обходной путь.
Ha. Ты прав. Я просто понял это. Благодаря! Но его «уродливый» способ может также использовать функцию толстой стрелки. –