为什么承诺????帮我

Why Promise???? Help me

决定开始学习node js,同时用VK写一个bot。我想制作一个显示用户名字和姓氏的功能,但我得到了某种承诺。也许这是一个愚蠢的问题,但仍然。

const VkBot = require('node-vk-bot-api');

const bot = new VkBot('токен вк');

async function get_username (user_id) {
    var act = await bot.execute('users.get', {
        'user_ids': user_id,
    });

    return act;
    // return act.first_name + ' ' + act.last_name;
}

bot.event('message_new', (ctx) => {
    var text = ctx.message.text;
    var peer_id = ctx.message.peer_id;
    var user_id = ctx.message.from_id;
    // console.log(peer_id + ' | ' + get_username(user_id) + ' | ' + text);
    console.log(get_username(user_id))
});


bot.startPolling();

您需要等待 get_username:

bot.event('message_new', async ctx => { // Callback async
    const text = ctx.message.text;
    const peer_id = ctx.message.peer_id;
    const user_id = ctx.message.from_id;
    console.log(await get_username(user_id)); // Wait for get_username
});

我会回答你的原因。

Promises are the ideal choice for handling asynchronous operations in the simplest manner. They can handle multiple asynchronous operations easily and provide better error handling than callbacks.

所以在 ES6 中你可以使用 async/await 而不是回调,这就是你实现非阻塞代码的方法。