私はこの TLS クライアントを持っています。このクライアントの中に、ServerX から PHP クライアントにデータを提供するサーバーがあります。わかりました..すべてが非常に高速に正常に機能しています...しかし、ServerXが応答するとすぐにPHPからの質問に答えたいと思いますが、同期ではありません。読んでください:
var ServerX = tls.connect(port,host,options,function() {
console.log(' Logging to ServerX...');
var phpServer = dnode({
fromPHP: function (variables,correlationalCallbackId,callBackToPHP) { // Shared PHP/NODE function
othermodule.serialize(variable, function(buffer){
HOW TO MAKE THIS-> global.phpCallBacks[correlationalCallbackId] = callBackToPHP; //I want to stores CallbackToPHP to use later when response from ServerX arrive
ServerX.write(buffer,function(){ // write buffer to ServerX
//console.log("buffer sent");
//callBackToPHP("Response from ServerX");//<--It works, but response dont exists
});
global.phpCallBacks[correlationalId]('Hi PHP! :)'); //Dont work even here
});
}// toNode END
});
//Starts DNODE server to integrate with PHP scripts
phpServer.listen(PHPServerPort);
});
そして、相関IDを持つ特定の応答を受信したときにcallbackToPHPを呼び出したい
ServerX.on('data', function(data) {
othemodule.decode(data,function(message){ // message is an object with messageCorrelationId and other informations
if(global.phpCallBacks[message.messageCorrelationId]) {
HOW TO MAKE IT WORK HERE-> global.phpCallBacks[message.messageCorrelationId](message.informations); // never fire :((
}
});
});
よく説明されていることを願っています...何百万ものスコープでネストされたときにCallBack関数を作成する方法は、グローバルスコープで動作しますか?!?!?