如何使LINE聊天机器人中的profile.displayName返回名称

时间:2019-06-21 07:18:40

标签: node.js line dialogflow chatbot

我开始使用lib @ line / bot.sdk,想从函数中获取displayName并返回它,但是它没有返回displayName,它返回了'undefined'

这是功能

record:function(userID){
    client.getProfile(userID).then((profile) => {
            let name = profile.displayName
            let ID = profile.userId
            console.log('record Name : ' + name);
            return name
            //console.log('record ID : ' + ID)
            //console.log('record Pic : '+profile.pictureUrl )
            //console.log('record Status :'+profile.statusMessage)
        }).catch((err) => {
            return "Error"
      })  
}

console.log可以获取displayName 但是函数返回“ undefined” 我也希望它返回displayName

1 个答案:

答案 0 :(得分:0)

您的问题是因为JavaScript是异步的,所以您不能只在异步函数内返回值,而是需要使用promise或callback:

record: function(userID, callback){
    client.getProfile(userID).then((profile) => {
        // return your name inside a callback function
        callback(null, profile.displayName);
    }).catch((err) => {
        callback(err, null);
    })
}

// Call your function and get return 'name'
record(userId, function(err, name) {
    if (err) throw err;
    console.log(name);
    // Continue here
});

我建议您阅读本文Understanding Asynchronous JavaScript,以获取更多信息

希望有帮助。