EventEmittersを使用することをお勧めします。アクションが完了したかどうかを示したい場合には、これを使用できます。オプションでデータも渡すことができます。
は新しいjavscriptファイル '私の-emitter.js'
私-emitter.js(ES6版)
const EventEmitter = require('events');
class MyEmitter extends EventEmitter {}
const myEmitter = new MyEmitter();
module.exports = myEmitter;
OR
私のエミッタを作成します。 js(Javascript版)
var EventEmitter = require('events').EventEmitter;
var util = require('util');
function MyEmitter(){
EventEmitter.call(this);
}
util.inherits(MyEmitter,EventEmitter);
myEmitter = new MyEmitter();
module.exports = myEmitter;
コードスニペット
(コードのコメントを確認してください)。非同期操作が myEmitter.emit('img-op-complete',data);
var myEmitter = require('./my-emitter.js'); //Get your emitter from the module
resemble('/Users/User/Documents/dev/engineerappcopy/VGimages/'+deviceName+'.png')
.compareTo('/Users/User/Documents/dev/engineerappcopy/VGimages/'+"nexUpdate"+'.png')
.ignoreColors().onComplete(function(data) {
browser.sleep(5000)
//Emit the event that data is available and pass the data
myEmitter.emit('img-op-complete',data);
console.log(data);
data.getDiffImage().pack().
pipe(fs.createWriteStream('/Users/User/Documents/dev/engineerappcopy/VGimages/'+deviceName+'VG.png'));
});
othermodule.jsあなたはデータが欲しい、これまで
(他のモジュールであれば)完了後data
が利用可能であることを言って、イベントを発する、コードの以下の部分を使用しますイベントの詳細はフォア
var myEmitter = require('./my-emitter.js'); //Get your emitter from the module
myEmitter.on('img-op-complete', function(data){
console.log(data); //You'll get your data here after op is done
})
、https://nodejs.org/dist/latest-v6.x/docs/api/events.html
メモ:約束は良い解決策ですが、同じモジュール内にデータが必要な場合は約束して良いデザインを使用してください。しかし、イベントはnode.jsに良いデザインパターンを提示します
を他のファイルの変数? 1つの方法は、グローバル変数として追加することです。イベントエミッタを使用してデータを渡すこともできます。このデータ変数をどこに使用するかを教えてください。私はそれに応じて助言することができます –
可能なdupeのhttps:// stackoverflow。コム/質問/ 23667086 /なぜ-ある - 私の変数-変更されていない-後-I - 変更 - それを - 内部の - 機能-asynchron私はちょうど別の関数でそれを使用したい – JohnnyHK
@Asifサイード...それこれは同期的ではないので、グローバル変数にすることはできません。 – iHateNodeJS