前提・実現したいこと
下記のプログラムのメッセージを作成する関数createMessage
を動かした後に、結果を出力(this.emit
)したいです。
(過去の質問、AlexaでDynamoDBを動かすを簡素化したものです。)
よろしくお願いします。
javascript
1function createMessage(data){ 2 // db access 3 params = {...} // table name and key setting. dataの中身も使う 4 dynamoDoc.query(params,function(err,res){ 5 let res_message = res.Items[0].message; // ここでメッセージを作成する 6 return res_message; 7 } 8} 9 10function handlerA(userGaveUp){ 11 // 最終的にこれを順序よく動かしたい 12 let message = createMessage(this); 13 console.log(message); //このままだとundefined 14 this.emit(':tell',message); // (*1)これが正しくemitされてほしい 15} 16 17// これが最初に実行される 18handlerA.call(this,false); 19
試したことと、発生している問題・エラーメッセージ
emitter
を用いる、createMessage
内でthis.emit
するなど幾つかトライしましたが、
- 上記の
let message = 関数
でreturn値にした場合:undefined
- emitterを定義して
let message=エミッタ.on()
にした場合:[Object Object]
- createMessage関数内でthis.emitする場合:
this
にemit
が未定義です
と返されます。
なお、
let message = "text"
では正常にtext
が出力されます。this.emit(':tell',message);
をコメントアウトすると、正常にmessageがconsole.logで出力されます。
補足情報(FW/ツールのバージョンなど)
Node.js 6.10
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2018/04/25 01:53
2018/04/28 07:15