簡體   English   中英

將變量傳遞給回調-Node.js

[英]Pass variable to callback - nodejs

我使用非官方的Facebook Chat API( https://github.com/Schmavery/facebook-chat-api )和Node.js創建了一個簡單的Messenger機器人。

目前,我正在努力在特定時間向特定用戶發送消息。 這是我的代碼的一部分:

if(msgdate.getTime() <= currdate.getTime()){

    console.log(alarms[i].message);
    // output: test

    api.getUserID(alarms[i].user, (err, users) => {
        if(err) return console.error(err);

        api.sendMessage(alarms[i].message, users[0].userID);
        // TypeError: Cannot read property 'message' of undefined
    });
}

而且,我的問題是:如何將警報數組傳遞給此回調,以便能夠將消息發送給特定用戶?

看起來您在某處更改了i變量,因此在調用回調時, alarms[i]未定義。 您需要將alarms[i]存儲在新變量中,並在回調中使用它:

let alarm = alarms[i];
api.getUserID(alarm.user, (err, users) => {
  if(err) {
    return console.error(err);
  }
  api.sendMessage(alarm.message, users[0].userID);
});

似乎您正在使用for循環外部。 嘗試以這種方式傳遞您的var:

var alarm = alarm[i];
(function (alarm) {
    if(msgdate.getTime() <= currdate.getTime()){

    console.log(alarm.message);
    // output: test

    api.getUserID(alarm.user, (err, users) => {
        if(err) return console.error(err);

        api.sendMessage(alarm.message, users[0].userID);
        // TypeError: Cannot read property 'message' of undefined
    });
})(alarm);

也許您也需要傳遞其他變量。 只需輸入逗號和其他var,例如:

(function (alarm, user){
    // your code here
})(alarm, user);

暫無
暫無

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

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