Ключевое слово this
указывает на функцию в области видимости (в вашем случае анонимная функция передана в new 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)
})
},
}