我正在尝试调用createTableIfNotExists
这个 npm 包,并在服务器端的 Meteor 中同步调用。
https://www.npmjs.com/package/azure-storage
但是,回调签名是 typefunction(error, result, response)
而不是传统的function(error,result)
.
1)因此,我不能使用Meteor.wrapAsync
,而是必须使用Meteor.bindEnvironment
2)我称之为'bindEnvironment'如下。注意带有 3 个参数的回调。这可行,但现在我想将 , 提取return value
回原始方法(即原始纤维)。
请注意,简单地在外部定义“addResult”createTableService
是行不通的,因为内部的回调bindEnvironment
相对于外部代码异步运行......即demoFunction()
在回调设置之前返回addResult
。
var demoFunction = function(){
var addResult = null;
var tableService = azure.createTableService(acctName, acctKey);
tableService.createTableIfNotExists(asTableName, Meteor.bindEnvironment(function(error,result,response){
if (error) {
throw new Meteor.Error(500, "table create error - " + asTableName + ": "+ error);
}
console.log(result);
if(result){
addResult = /*call to meteor method*/
return addResult;
}
}));
return addResult; //this is what I would like to do, but will always be null, as written.
}
我怎样才能调用createTableIfNotExists
并仍然返回addResult
到调用的函数 demoFunction()
?
谢谢!