gpt4 book ai didi

javascript - 异步/等待 -> 可能没有返回值吗?

转载 作者:行者123 更新时间:2023-12-01 01:44:48 24 4
gpt4 key购买 nike

所以,我有一个可以执行一些异步工作的函数。

该函数当前看起来像这样(setTimeout 目前已实现,因为我尚未成功实现 async/await 方式) :

function gatherAllRelevantReservationData(TimeFrameStartFromInputfield, TimeFrameEndFromInputfield, liebraum, liebsitz, reservationFromDatabaseTimeFramesStart, reservationFromDatabaseTimeFramesEnd){

console.log("reservationFromDatabaseTimeFramesStart inside gatherAllRelevantReservationData are ", reservationFromDatabaseTimeFramesStart, reservationFromDatabaseTimeFramesEnd)
//console.log("TimeFrameStartFromInputfield and TimeFrameEndFromInputfield inside gatherAllRelevantReservationData are ", TimeFrameStartFromInputfield, TimeFrameEndFromInputfield)
var timeFrameAsObject = convertDateStringToJavaScriptDateTimeObject(TimeFrameStartFromInputfield, TimeFrameEndFromInputfield)
var startDateAsObject = timeFrameAsObject.start
var endDateAsObject = timeFrameAsObject.end
var timeFrameAsUnixTimeStamp = ConvertToCustomizedUnixTimestampString(startDateAsObject, endDateAsObject)
var startDateAsUnixTimeStamp = timeFrameAsUnixTimeStamp.start;
var endDateAsUnixTimeStamp = timeFrameAsUnixTimeStamp.end;
getTable(startDateAsUnixTimeStamp, endDateAsUnixTimeStamp, liebraum);

if(FavSeatcheckHasBeenEnabled == 1){
setTimeout(function(){
prepareSelectedAndDatabaseDateStringsForComparison(startDateAsObject, endDateAsObject, liebraum, liebsitz, reservationFromDatabaseTimeFramesStart, reservationFromDatabaseTimeFramesEnd);
}, 300)
}
};

getTable 函数需要一些时间,并且需要在调用 prepareSelectedAndDatabaseDateStringsForComparison 之前完成。问题是 getTable 没有任何返回值。

我对 ES7 async/await 功能以及 ES6 Promise 还很陌生。我知道等待通常期望返回一些 promise ,并且我可能可以用一些非常hacky,令人讨厌的方式来安排它。

但我想知道是否还有其他优雅的方法来解决这个问题。

理想情况下,我只想将 async 附加到 gatherAllRelevantReservationData,然后在 getTable 调用前面放置一个“await”,但是这当然行不通。

有什么想法可以解决这个问题吗?

编辑:这是“getTable”函数:

function getTable(start, ende, liebraum)
{
//console.log("start in getTable is " + start)
//console.log("ende in getTable is " + ende)
fillRooms(liebraum);
$.post("../include/returnTable.php", {
anfang: start,
ende: ende,
art: art
}, function(data){
document.getElementById("tablediv").innerHTML= data;
console.log("start inside callback of AJAX inside getTabel is ", start)
//console.log("data after getTable function " + data);
//fillRooms(liebraum);
})

}

最佳答案

如果你想使用async/await,你需要更改getTable以返回一个Promise(或一些 thenable),因为只有它们可以被 awaited。

修复您的 getTable 以返回 $.post 调用,以便可以在 gatherAllRelevantReservationData 函数中检测到其成功,然后您可以简单地await调用getTable:

async function gatherAllRelevantReservationData(...) {
...
await getTable(...);
...
}
function getTable(start, ende, liebraum) {
fillRooms(liebraum);
return $.post("../include/returnTable.php", {
anfang: start,
ende: ende,
art: art
}, function(data) {
document.getElementById("tablediv").innerHTML = data;
})
}

关于javascript - 异步/等待 -> 可能没有返回值吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52053890/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com