首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >Nodejs:在类方法的异步函数中访问this

Nodejs:在类方法的异步函数中访问this
EN

Stack Overflow用户
提问于 2018-05-28 19:29:40
回答 1查看 131关注 0票数 0

我在调用异步函数(在数据库中搜索)的方法中访问"this“时遇到了问题。

在我的"getAll“方法中:我可以在"PersonModel.find”之外访问this._persons,但是在"PersonModel.find“的回调中我不能访问this._persons。

我已经尝试添加"PersonModel.find.bind(this)",但结果是相同的……

代码语言:javascript
复制
var PersonModel = require('./model')
//Class
class personRepository {
    constructor() {
        this._persons = new Set();
    }

    getAll( cb ) {
        let results = new Set();

        PersonModel.find({}, 'firstName lastName', function (err, people) {
            if (err) { 
                console.error(err);
                return next(err) 
            }
            people.forEach((person, index) => {
                results.add(person);
            });
            //this._persons.add("this._persons isn't accessible");
            //cb(this._persons);
        });
        this._persons.add("this._persons is accessible");
        console.log(this);
    }
}

// Test
var personRepo = new PersonRepository();
personRepo.getAll( (persons) => {
    for (let item of persons) console.log(item);
});

如何在我的PersonModel.find函数中访问this._persons?(或者我需要重新设计我的代码?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-05-28 20:16:43

使用=>函数

代码语言:javascript
复制
getAll( cb ) {
    let results = new Set();

    PersonModel.find({}, 'firstName lastName', (err, people) => {
        if (err) { 
            console.error(err);
            return next(err) 
        }
        people.forEach((person, index) => {
            results.add(person);
        });
        this._persons = results;

        cb(this._persons);
    });
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50565392

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档