我正在使用这个美妙的同步模块 synchronize.js - http://alexeypetrushin.github.io/synchronize/docs/index.html。
我遇到了一种情况,我必须将同步函数的返回值放入光纤之外的范围内。这是我正在谈论的一个基本示例:
var records = sync.fiber(function() {
var results = ... // some synchronized function
return results;
});
而records
理论上,将包含results
来自光纤范围内的值。我一直在阅读期货(纤维/期货模块)以及如何在这种情况下使用它们,但我还没有想出任何接近工作的东西。我想要一些方向和/或解决方案。
编辑:
有关我希望完成的更详尽的示例:
// executes a stored procedure/function
exec: function (statement, parameters) {
init();
var request = new sql.Request(),
results;
processParams(parameters, request);
var res = sync.fiber(function(){
try {
var result = sync.await(request.execute(statement, sync.defers('recordsets', 'returnValue')));
results = result.recordsets.length > 0 ? result.recordsets[0] : [];
return results;
}
catch (e) {
console.log('error:connection:exec(): ' + e);
throw(e);
}
});
// though typical scope rules would mean that `results` has a
// value here, it's actually undefined.
// in theory, `res` would contain the return value from the `sync.fiber` callback
// which is our result set.
return res;
}
正如您在此处看到的,我想要完成的是results
从光纤的作用域中获取主作用域中的值。