sin*_*inθ 34 javascript node.js promise q
我正在处理需要某个函数同步的NodeJs框架,但我需要检索一个只能异步访问的值.在一个完美的世界里,我能够回报一个承诺,但我不能.
作为一个快速而肮脏的解决方案,我创建了以下方法:
exports.synchronizePromise = function(promise) {
var value;
promise.then(function(promiseValue) {
value = promiseValue;
});
while (!value) {} // Wait for promise to resolve
console.log("DONE: " + value); // Never reached
return value;
};
Run Code Online (Sandbox Code Playgroud)
但是我收到了一个错误.有没有办法完成我需要的东西?
在 Q 中,如果你有一个已解决的承诺,你可以通过检查获取该值
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")
}
};
Run Code Online (Sandbox Code Playgroud)
但是,如果承诺处于待处理状态,那么它确实是异步的,并且您的问题没有意义,并且该函数将抛出错误。
| 归档时间: |
|
| 查看次数: |
48722 次 |
| 最近记录: |