Javascript 在多个位置等待异步函数

Javascript 在多个位置等待异步函数,javascript,async-await,es6-promise,Javascript,Async Await,Es6 Promise,通过承诺,我可以让两个单独的“线程”等待相同的值: let触发器; 常量承诺=新承诺(r=>{ log('promise被创建*一次*'); 触发器=值=>{ log('触发器被称为*once*'); r(值); } }); (异步()=>{ log('A waiting'); 常量值=等待承诺; log(`A finished,get${value}`); })(); (异步()=>{ console.log('B waiting'); 常量值=等待承诺; log(`B finished,g

通过承诺,我可以让两个单独的“线程”等待相同的值:

let触发器;
常量承诺=新承诺(r=>{
log('promise被创建*一次*');
触发器=值=>{
log('触发器被称为*once*');
r(值);
}
});
(异步()=>{
log('A waiting');
常量值=等待承诺;
log(`A finished,get${value}`);
})();
(异步()=>{
console.log('B waiting');
常量值=等待承诺;
log(`B finished,get${value}`);
})();
触发器(“你好”);

log('And*two*things正在等待单个承诺')
等待
,您需要有一个对单数承诺的引用,因此您不能按需调用函数,让该函数创建承诺,然后在其他地方使用相同的承诺(除非创建承诺的函数也将其保持在返回给其他调用方的状态,如单例)

我首先创建一个单独的承诺,然后将其发送给异步函数:

const trigger=async()=>{
log('trigger应该被调用*once*');
返回“你好”;
};
异步函数as1(prom){
log('A waiting');
常数值=等待prom;
log(`A finished,get${value}`);
}
异步函数as2(prom){
console.log('B waiting');
常数值=等待prom;
log(`B finished,get${value}`);
}
const thePromise=trigger();
as1(提议);

as2(提议)一个ha。这是有道理的。我可以将
异步函数包装为1
异步函数包装为2
,使用一个实用程序,将承诺作为参数,并返回一个等待承诺的函数。所以所有重复的逻辑都在一个地方。我想我会的。