[英]var becomes undefined inside Promise
這可能是一個很小的問題,但我找不到解決方案,請耐心等待!
我不明白為什么在const body = ctx.request.body
ctx變得不確定。 之前,它延續this
從create()
它調用函數createEntity()
我究竟做錯了什么?
我正在這樣調用函數createEntity
:
module.exports = {
createEntity: () => {
var ctx = this // both ctx and this are fine
return new Promise((resolve, reject) => {
const body = ctx.request.body // <-- ctx is undefined
resolve();
})
}
}
create()
調用createEntity()
。 這是一個通過Koa.js用co()
包裝的生成器函數
create: function * () {
this.body = yield createEntity.call(this)
}
ctx和這都很好
我不信。 您正在使用箭頭功能 。 您無法通過call
設置箭頭函數的this
,因為箭頭本身沒有this
1 。
請改用普通功能。
另請參見Arrow函數與函數聲明/表達式:它們是否等效/可互換?
1: createEntity
內部的this
指模塊的頂層this
,即module.exports
:
this; // <------------|
module.exports = { |
createEntity: () => { |
var ctx = this // ---|
}
}
console.log(this === module.exports); // true
通過分配箭頭功能createEntity
, this
箭頭函數內部分配給的值this
在范圍,其中被宣布為箭頭的功能,這可能是全局對象(因此,如果您正在使用use strict
, this
將是undefined
),即使您使用call
調用該函數,它也會保持這種狀態。
改用通用函數表達式
createEntity: function () {
...
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.