JS 从回调函数中获取数据

最终 Node.js 代码:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
whois.lookup(process.env.DOMAIN, (error, data) => {
  async function main() {
    // ...

    // send mail with defined transport object
    let info = await transporter.sendMail({
      from: `tianheg <${user}>`,
      to: `域名邮箱 <${to}>`, // list of receivers
      subject: `今日 ${year}-${month}-${day} 测试`, // Subject line
      text: data.slice(0, 936), // plain text body
    });

    // ...
  }
  main();
});

我想将通过 whois 查到的域名信息 data 作为邮件的文本发送出去。但怎么也不得其道。最开始我是这样写的:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
async function main() {
  // ...

  // get whois info
  let whoisInfo;

  whois.lookup(process.env.DOMAIN, function(err, data) {
    whoisInfo = data.slice(0, 936);
  });

  console.log(whoisInfo)

  // ...
}

main();

但是,怎么都得不到 whoisInfo,总是 undefined。我还找到一些讲异步编程的内容,但看得云里雾里。最终,我突然想到,能不能把主函数放到 whois.lookup 里面,于是就出现了开头的代码。刚好解决了我的需要。






评论和交流请发送邮件到 me@tianhegao.com





通过以下渠道赞赏此文