我试图从脚本中的另一个函数引用 getJSONS 函数,但我似乎无法这样做。
我收到的错误是 (node:5857) UnhandledPromiseRejectionWarning: TypeError: this.getJSONS is not a function
,我该如何解决这个问题?
module.exports = {
getJSONS(bucket, storageDir, folderNameLength) {
return new Promise((resolve, reject) => {
resolve(`filesss`)
})
},
setJSONSMetadata(bucket, storageOptions) {
return new Promise((resolve) => {
this.getJSONS(bucket, storageOptions, storageOptions.prefix.length).then((jsonFiles) => {
// do something
});
resolve(true)
})
},
}
最佳答案
关键字 this
指向范围内的函数(在您的例子中,是传递给 new Promise
的匿名函数),而不是指向您导出的对象。
一种变通方法可能是在创建 promise 之前将 this
的值存储到变量中。然后调用变量而不是 this
。一种常见的做法是使用 self
这个词。它可能看起来像:
module.exports = {
getJSONS(bucket, storageDir, folderNameLength) {
return new Promise((resolve, reject) => {
resolve(`filesss`)
})
},
setJSONSMetadata(bucket, storageOptions) {
const self = this; // store the value of `this` from the higher scope
return new Promise((resolve) => {
// `this` inside here is different
self.getJSONS(bucket, storageOptions, storageOptions.prefix.length).then((jsonFiles) => {
// do something
});
resolve(true)
})
},
}
关于javascript - 引用模块 javascript 中的另一个函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56561075/