我正在非异步函数中执行变量分配,但是目标变量的值在分配语句运行后不会更改。
ctx
是Koa2上下文。收到http响应后,此代码将运行。我正在尝试使用(http)响应对象中的值更新上下文。
ctx
和ctx.response
均未冻结。
我希望在“ AFTER”控制台中,ctx.response.status
等于200
。
我怀疑这是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
This was my output. Note the BEFORE/AFTER tags:
BEFORE=ctx.response.status=404/response.status=200
AFTER=ctx.response.status=404/response.status=200
答案 0 :(得分:0)
事实证明,此问题是由先前的中间件调用next()
导致而没有 等待 关键字 < / p>
我不是Node或Koa的专家,但是从研究看来,状态属性变得不可变是有条件的。