簡體   English   中英

為什么要答應??? 幫我

[英]Why Promise???? Help me

決定開始學習 node js,同時在 VK 中編寫一個機器人。 我想做一個顯示用戶名字和姓氏的函數,但我得到了某種 Promise。 也許這是一個愚蠢的問題,但仍然如此。

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
});

我會回答你的原因。

Promise 是以最簡單的方式處理異步操作的理想選擇。 它們可以輕松處理多個異步操作,並提供比回調更好的錯誤處理。

所以在 ES6 中你可以使用 async/await 代替回調,這就是你如何實現非阻塞代碼。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM