Присвоение переменной не присваивается переменной - что я делаю не так? - PullRequest
0 голосов
/ 29 мая 2019

Я выполняю назначение переменной в неасинхронной функции, но значение переменной назначения не изменяется после выполнения оператора присваивания.

ctx - это контекст Koa2. Этот код запускается после получения ответа http. Я пытаюсь обновить контекст значениями объекта ответа (http).

Ни ctx, ни ctx.response не заморожены.

Я ожидаю, что ctx.response.status будет равно 200 в консоли AFTER.log

Я подозреваю, что это своеобразное поведение Node, но я не очень хорошо знаю Node.

Что я здесь не так делаю?

console.log('BEFORE=ctx.response.status='+ctx.response.status+'/response.status='+response.status)
  ctx.response.status = response.status
console.log(' AFTER=ctx.response.status='+ctx.response.status+'/response.status='+response.status)
  ctx.response.timestamp = response.timestamp
  ctx.response.body = response.body

Это был мой вывод. Обратите внимание на теги ДО / ПОСЛЕ:

BEFORE=ctx.response.status=404/response.status=200
 AFTER=ctx.response.status=404/response.status=200

1 Ответ

0 голосов
/ 31 мая 2019

Как оказалось, эта проблема была вызвана предыдущим вызовом промежуточного программного обеспечения next(), выполняемым без await ключевое слово

Я не эксперт в Node или Koa, но из исследований выясняется, что существуют условия, когда свойство status становится неизменным.

...