我想给WAMP打个电话到一个遥控器上。但是,如果被调用的函数具有异步行为,我不知道如何编写它。在每个示例中,我都看到远程函数返回结果。在我通常使用回调的异步方式下,如何做到这一点?
示例:这是一个函数的注册,该函数将异步获取文件的内容。
session.register('com.example.getFileContents', getFileContents).then(
function (reg) {
console.log("procedure getFileContents() registered");
},
function (err) {
console.log("failed to register procedure: " + err);
}
);下面是我如何远程调用该函数的方法。
session.call('com.example.getFileContents', ["someFile.txt"]).then(
function (res) {
console.log("File Contents:", res);
},
function (err) {
console.log("Error getting file contents:", err);
}
);但这是注册的实际功能。
function getFileContents(file) {
fs.readFile(file, 'utf8', function(err, data) {
// How do I return the data?
});
}如何从getFileContents返回数据,以便通过WAMP连接将其发回?我知道我可以使用readFileSync并返回它返回的内容。但是我专门问如何以异步的方式来完成这个任务。
发布于 2015-12-23 14:38:33
我想出了如何用承诺来做这件事。下面是这个函数是如何通过承诺实现的。
var fs = require('fs');
var when = require('when');
function getFileContents(file) {
var d = when.defer();
fs.readFile(file, 'utf8', function(err, data) {
d.resolve(data);
});
return d.promise;
}https://stackoverflow.com/questions/34437537
复制相似问题