Javascript slack bot使用aws lambda功能向用户发送直接消息

Javascript slack bot使用aws lambda功能向用户发送直接消息,javascript,asynchronous,aws-lambda,async-await,slack-api,Javascript,Asynchronous,Aws Lambda,Async Await,Slack Api,我试图使用向用户发送直接消息,但我认为我的getSlackUser方法在调用slackId时没有及时完成 log(slackId)给出了未定义的含义,这意味着它不能用 如何确保getSlackUser方法在转移到其他方法之前完成(使其阻塞) const { WebClient } = require('@slack/web-api'); const { App } = require('@slack/bolt') const rtm = new RTMClient(process.env.SL

我试图使用向用户发送直接消息,但我认为我的getSlackUser方法在调用slackId时没有及时完成

log(slackId)给出了未定义的含义,这意味着它不能用

如何确保getSlackUser方法在转移到其他方法之前完成(使其阻塞)

const { WebClient } = require('@slack/web-api');
const { App } = require('@slack/bolt')

const rtm = new RTMClient(process.env.SLACK_OAUTH_TOKEN);
const web = new WebClient(process.env.SLACK_OAUTH_TOKEN);
const app = new App({
  token: process.env.SLACK_OAUTH_TOKEN,
  signingSecret: process.env.SLACK_SIGNING_SECRET
});


exports.handler = async (event) => {
  const slackId = await getSlackUser('example_real_name').id;
  console.log(slackId);
  await sendSlackMessage(slackId, 'Bot message');
}


sendSlackMessage = async (channel, message) => {
  await web.chat.postMessage({
    channel: channel,
    text: message,
    as_user: true
  });
}

getSlackUser = async(real_name) => {
  const result = await app.client.users.list({
    token: process.env.SLACK_OAUTH_TOKEN
  });
  console.log(result);
  return result.members.find((user) => user.real_name == real_name);
}

问题在于这一行的优先级:

const slackId = await getSlackUser('example_real_name').id;
由于成员访问比等待具有更高的优先级(在之前计算),因此它实际上与:

const slackId = await (getSlackUser('example_real_name').id);
getSlackUser
返回承诺对象,则其
id
成员未定义。wait等待未定义的,即
undefined

要解决此问题,请确保在
.id
之前计算等待:

const slackId = (await getSlackUser('example_real_name')).id;

问题在于这一行的优先级:

const slackId = await getSlackUser('example_real_name').id;
由于成员访问比等待具有更高的优先级(在之前计算),因此它实际上与:

const slackId = await (getSlackUser('example_real_name').id);
getSlackUser
返回承诺对象,则其
id
成员未定义。wait等待未定义的,即
undefined

要解决此问题,请确保在
.id
之前计算等待:

const slackId = (await getSlackUser('example_real_name')).id;

显示用户列表的console.log(result)是否提供了一些信息?如果是,那么这个成员数组是否有一个与输入实名匹配的实名?是的,它会产生一个如下所示的响应:显示用户列表的console.log(result)是否给出了一些信息?如果是,这个成员数组是否有一个与输入实名匹配的实名?是的,它会产生如下所示的响应: