I\'m dealing with a NodeJs framework that requires a certain function to be synchronous, but I need to retrieve a value that can only be accessed asynchronously. In a perfect wo
Given that node is by default only single threaded there isn't really an easy way to solve this. There is one though. Bases on generators/fibers you can add a sort of concurrent execution to node. There is a waitfor implementation based on that.
In Q if you have a resolved promise you can just take the value with inspect
exports.synchronizePromise = function(promise) {
var i = promise.inspect();
if (i.state === "rejected") {
throw i.reason;
} else if (i.state === "fulfilled") {
return i.value;
} else {
throw new Error("attempt to synchronize pending promise")
}
};
However if the promise is pending, it is truly asynchronous and your question doesn't then make sense and the function will throw an error.