我想强迫承诺等到广播被解雇。所以我提到了本网站的一些帖子,并在代码中使用了下面显示的技术 部分。
但实际上 broadcastPromise 不会等到它被解决。
请提供解决方案
码:
const promiseFunctions = {};
const broadcastPromise = new Promise((resolve, reject) => {
promiseFunctions.resolve = resolve;
promiseFunctions.reject = reject;
});
broadcast() {
promiseFunctions.resolve(broadcastValues);
}
return myMethod({
//fire the broadcast
..
})
.then(() => broadcastPromise) //this line must wait till the broadcast is fired and the value from it is resolved
.then(() =>
//do some processing on broadcastPromise
return value;)
答案 0 :(得分:1)
如果没有看到有问题的代码(myMethod()
),你就会使它变得比它需要的更复杂。
将broadcast()
函数写为promise返回函数,或者async broadcast(){}
,或者确保它返回一个promise。
然后,从你的承诺链中,myMethod
正在返回一个承诺。要等到新的承诺得到解决",要么:
a)使用async function myMethod(){}
并等待broadcast()
来电。
要么
b)在返回的承诺myMethod()