注意:这可能不是重复的,因为我有很多不同的要求,而且我找不到解决方案。
这是场景:
我正在使用具有getSignature
功能的自定义组件。
关于此功能:
它必须是同步的,添加async
关键字将不起作用。
在安装组件时将自动调用此函数。
此函数必须返回一些数据以备将来使用。
但是现在必须必须(从HTTP请求)同步生成签名,并且在实际安装此组件之前不能生成签名。
这是简化的代码:
class Showcase extends UniqueComponent {
getSignature() {
function runAsyncSynchronously(asyncFunc) {
// Is this possible?
}
function getData() {
return new Promise(resolve => {
setTimeout(() => resolve(42), 3000);
});
}
let data = runAsyncSynchronously(getData);
return data; // output "42" after 3 seconds
}
}
是否有可能实现这一目标? 等待期间是否冻结整个过程都没关系。
我尝试过,但是它永远被卡住了...
function runAsyncSynchronously(asyncFunc) {
let isDone = false;
let result = null;
asyncFunc().then(data => {
isDone = true;
result = data;
});
while (!isDone){
}
return result;
}