Javascript 在执行另一个回调后解析承诺

Javascript 在执行另一个回调后解析承诺,javascript,asynchronous,async-await,promise,callback,Javascript,Asynchronous,Async Await,Promise,Callback,我需要为functionA实现以下用法 functionA(url).then((result) => process(result)) 问题在于,为了获取结果,functionA在函数B内部调用了一个异步函数B,而从函数B中获取结果的唯一方法是通过回调 我知道下面的解决方案肯定是错误的,因为它返回undefined,但我认为这可能是一个好的开始 async function functionA(url) { return new Promise((resolve, reject)

我需要为functionA实现以下用法

functionA(url).then((result) => process(result))
问题在于,为了获取
结果
,functionA在函数B内部调用了一个异步函数B,而从函数B中获取
结果
的唯一方法是通过回调

我知道下面的解决方案肯定是错误的,因为它返回undefined,但我认为这可能是一个好的开始

async function functionA(url) {
  return new Promise((resolve, reject) => {
    let outerResult

    const callback = (result) => {
      outerResult = result
    }

    functionB(url, callback)

    resolve(outerResult)
  })
}


PS:functionB只能通过回调返回值的原因是它将结果请求添加到请求集合中,然后根据优先级触发请求。除了从functionB返回
结果
之外,我想不出任何其他方法。

因为
functionA
返回承诺并且不使用
Wait
它不是
async

由于
functionB
接受回调,您只需传递
resolve
函数即可

使用箭头功能:

函数b(url、cb){
//模拟一些回调行为
cb(`${url}+10`);
}
函数函数(url){
返回新承诺((解决、拒绝)=>{
函数B(url,(结果)=>{
决心(结果);
});
});
}
功能过程(结果){
控制台日志(结果);
}
functionA(“sample.com”)。然后((结果)=>过程(结果))为什么不在
回调中
解析(结果)
而不是
outerResult=result
?在当前代码中,resolve(outerResult)
总是在回调之前运行,因此承诺总是解析为undefined。您在这里询问的似乎是“我如何承诺
functionB
?”,或者通常是“我如何承诺回调函数?”只是
返回新承诺(解析)=>{functionB(url,resolve);}
!不要“在解决问题之前做点什么”。在解析后,在
然后
处理程序中执行您必须执行的任何操作。