Javascript 使用async Wait时如何将Resolve回调传递到承诺中?

Javascript 使用async Wait时如何将Resolve回调传递到承诺中?,javascript,asynchronous,promise,async-await,es6-promise,Javascript,Asynchronous,Promise,Async Await,Es6 Promise,假设我有一个函数,它返回一个承诺: let logData = function () { return new Promise(function (resolve, reject) { // doing some stuff resolve('data'); }); }; 假设我有一个用于resolvecallback的回调函数: let resolveCallback = function (data) { console.log(`

假设我有一个函数,它返回一个
承诺

let logData = function () {
    return new Promise(function (resolve, reject) {
        // doing some stuff
        resolve('data');
    });
};
假设我有一个用于
resolve
callback的回调函数:

let resolveCallback = function (data) {
    console.log(`doing some stuff with ${data}`);
};
当我只使用承诺而不使用
async await
时,我可以很容易地将此回调传递到承诺中,如下所示:

logData().then(resolveCallback);
在本例中,当我的承诺正在执行时,它将达到
resolve('data')行和
resolveCallback
将被执行,因为
resolve=resolveCallback

现在,当我使用
asyncwait
方法时,是否可以以某种方式将
resolveCallback
传递到promise中

async function logDataAsync() {
    // IS THERE NO WAY TO PASS resolveCallback as resolve PARAMETER HERE???
    await logData();
} 

logData().then(resolveCallback)

如果你使用的是承诺,不要与简单的回调混在一起。调用方应该使用从
logDataAsync()
返回的承诺,如
logDataAsync()。然后(resolveCallback)
。没有必要发明不同的回调机制。使用承诺中已经包含的一个。你真正想解决的问题是什么?在承诺中包装同步代码并不能使其异步。我怀疑你真的不明白做任何你想做的事情的正确方法,所以你试图强迫承诺去做他们实际上没有做的事情。但是,由于您还没有描述您试图解决的真正问题,我们还不能真正帮助您解决这个问题。仅供参考,这听起来像是用解决方案描述问题,而不是描述实际问题。仅供参考,
resolve!==resolveCallback
所以你把那个部分弄错了<代码>解析()
是它自己的函数。调用它会导致调用
resolveCallback()
和任何其他
。然后()
处理程序
.then()
注册一个回调,以便在承诺在将来某个时间解析时调用。当您调用
时,.then()
is将回调添加到回调的内部数组中。调用
resolve()
时,会导致调用数组中的所有回调(在堆栈展开的短暂延迟之后)。该内部数组中可能有许多不同的回调,因为可以对同一承诺多次调用
.then()
,每次都注册另一个回调。
logData()
返回一个承诺
wait logData()
返回承诺的解析值。这就是等待的工作方式。当您等待Javascript中的承诺时,它会暂停函数的执行,直到该承诺得到解决或拒绝为止。如果解析,它会将解析的值分配给
数据
变量,然后继续执行程序。这就像执行
logData()。然后(data=>{/*此处的代码*/})
。这不是推荐的设计模式。
logDataAsync()
的调用方应该使用它返回的承诺来监视其完成情况。
logData().then(resolveCallback)