Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/468.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
将数组映射函数中类的`this`对象与异步、wait-Nodejs、Javascript一起使用_Javascript_Arrays_Node.js - Fatal编程技术网

将数组映射函数中类的`this`对象与异步、wait-Nodejs、Javascript一起使用

将数组映射函数中类的`this`对象与异步、wait-Nodejs、Javascript一起使用,javascript,arrays,node.js,Javascript,Arrays,Node.js,我需要使用在map函数中调用这个对象。我已经遵循了相关的答案。但所有人都表现出同样的例外 这是我的课 const userServiceClient = require("./clients/user-service-client.js"); class GetProfilesByQueryHandler { constructor(userRepo) { this.userRepo = userRepo; } /** * Returns

我需要使用在map函数中调用这个对象。我已经遵循了相关的答案。但所有人都表现出同样的例外

这是我的课

const userServiceClient = require("./clients/user-service-client.js");

class GetProfilesByQueryHandler {

    constructor(userRepo) {
        this.userRepo = userRepo;
    }

    /**
     * Returns profiles
     * @param {any} req 
     */
    async handleHttp(req) {
        const users = await userServiceClient.getUserByQuery(query, req.reqId);      

        users.map((user) => {
            user.profile = await this.userRepo.findByReferenceId(user.id);
        });

        console.log(users);
    }

}

module.exports = GetProfilesByQueryHandler;
我尝试了以下方法,并抛出了相关的异常

users.map((user) => {
    user.profile = await this.userRepo.findByReferenceId(user.id);
});

----------------- Result ------------------------------

user.profile = await this.userRepo.findByReferenceId(user.id);',
     '                                 ^^^^',
     'SyntaxError: Unexpected token this',
######################################################

users.map(function(user) {
        user.profile = await this.userRepo.findByReferenceId(user.id);
}.bind(this));

----------------- Result ------------------------------

user.profile = await this.userRepo.findByReferenceId(user.id);',
    '                                 ^^^^',
'SyntaxError: Unexpected token this'

######################################################

users.map(this._getProfile, {repo: this.userRepo});

_getProfile(user) {
        return user.profile = await this.repo.findByReferenceId(user.id);
}

----------------- Result ------------------------------

'        return user.profile = await this.repo.findByReferenceId(user.id);',
'                                    ^^^^',
'',
'SyntaxError: Unexpected token this',

######################################################
var self = this;

users.map((user) => {
    user.profile = await self.userRepo.findByReferenceId(user.id);
});

----------------- Result ------------------------------

'            user.profile = await self.userRepo.findByReferenceId(user.id);',
'                                 ^^^^',
'',
'SyntaxError: Unexpected identifier',

######################################################
var that = this;

users.map((user) => {
    user.profile = await that.userRepo.findByReferenceId(user.id);
});

----------------- Result ------------------------------

'            user.profile = await that.userRepo.findByReferenceId(user.id);',
'                                 ^^^^',
'',
'SyntaxError: Unexpected identifier

######################################################
var obj = {repo: this.userRepo};

users.map((user) => {
    user.profile = await this.repo.findByReferenceId(user.id);
}, obj);

----------------- Result ------------------------------

'            user.profile = await this.repo.findByReferenceId(user.id);',
'                                 ^^^^',
'',
'SyntaxError: Unexpected token this',

######################################################

这样做的方法是什么。很多问题都与此相关。但所有的答案对我来说都不管用

未测试,但应能正常工作。 尝试显式设置上下文

users.map(this._getProfile.call({repo: this.userRepo}));

_getProfile(user) {
        var self = this;
        return function (user) { user.profile = await self.repo.findByReferenceId(user.id); }
}

未经测试,但应能正常工作。 尝试显式设置上下文

users.map(this._getProfile.call({repo: this.userRepo}));

_getProfile(user) {
        var self = this;
        return function (user) { user.profile = await self.repo.findByReferenceId(user.id); }
}

编辑:如果您想记录并返回异步调用的真实结果,我添加了第二个代码段。希望有帮助

您只是错过了arrow函数中的async关键字:

constuserserviceclient=require(“./clients/user-service-client.js”);
类GetProfilesByQueryHandler{
构造函数(userRepo){
this.userRepo=userRepo;
}
/**
*返回配置文件
*@param{any}req
*/
异步handleHttp(req){
const users=await userServiceClient.getUserByQuery(query,req.reqId);
//我在这里添加了一个“异步”。
users.map(异步(用户)=>{
user.profile=wait this.userRepo.findByReferenceId(user.id);
});
//如果没有这个异步,您的arrow函数就不是异步的
//你不能在里面使用wait。
//顺便说一句,此console.log不会记录映射后的用户。
console.log(用户);
}
}

module.exports=GetProfilesByQueryHandler编辑:如果您想记录并返回异步调用的真实结果,我添加了第二个代码段。希望有帮助

您只是错过了arrow函数中的async关键字:

constuserserviceclient=require(“./clients/user-service-client.js”);
类GetProfilesByQueryHandler{
构造函数(userRepo){
this.userRepo=userRepo;
}
/**
*返回配置文件
*@param{any}req
*/
异步handleHttp(req){
const users=await userServiceClient.getUserByQuery(query,req.reqId);
//我在这里添加了一个“异步”。
users.map(异步(用户)=>{
user.profile=wait this.userRepo.findByReferenceId(user.id);
});
//如果没有这个异步,您的arrow函数就不是异步的
//你不能在里面使用wait。
//顺便说一句,此console.log不会记录映射后的用户。
console.log(用户);
}
}

module.exports=GetProfilesByQueryHandler这也不适合我。同样的错误也在抛出<代码>语法错误:意外标识符
这对我也不起作用。同样的错误也在抛出<代码>语法错误:意外标识符
谢谢,在您第一次回答后,我正在寻找解决方案。突然你更新了我真正需要的答案。如果有帮助,我会很高兴的!谢谢,在你第一次回答之后,我正在寻找解决方案。突然你更新了我真正需要的答案。如果有帮助,我会很高兴的!