我有以下JScode
function DetermineLoggedUser(){
return $.post('determineLoggedUser.php',{
}).then((result) => {
loggedUser = result;
})
php看起来像这样:
<?php
session_start()
if(ISSET($_SESSION["loggedUser"])) {
echo $_SESSION["loggedUser"];
}else{
echo "'userNotLogged'";
}
?>
现在,我希望DetermineLoggedUser()
在$ .post AJAX调用设置后返回loggedUser
的值。
同时,我希望使用异步/等待功能来调用DetermineLoggedUser()
的函数等待。
所以看起来像这样:
async function callingSeveralFunctions(){
//some functions
var result = await determineLoggedUser();
//some other functions which need to wait for determineLoggedUser()
}
function DetermineLoggedUser(){
return $.post('determineLoggedUser.php',{
}).then((result) => {
loggedUser = result;
})
callingSeveralFunctions();
因此,由于我需要返回AJAX调用创建的promise才能使“ await”起作用,所以我想知道如何同时返回{{1}内设置为loggedUser
的值}?
答案 0 :(得分:1)
您的第一句话很正确-从DetermineLoggedUser()
函数返回Promise是正确的。然后,调用代码可以将.then()
附加到该Promise对象(而不是将其附加到DefineLoggedUser函数中,此操作不是那么有用),您可以在其中检索值,然后执行所需的其他任何函数取决于它。
function callingSeveralFunctions(){
//some functions
var promise = determineLoggedUser();
promise.then((response) => {
loggedUser = response;
//some other functions which need to wait for determineLoggedUser() - calls to these need to go inside the callback, here
});
}
function DetermineLoggedUser(){
return $.post('determineLoggedUser.php',{});
}
callingSeveralFunctions();
您无法逃避它是异步的事实,但是您可以更好地使用它。
答案 1 :(得分:0)
每个诺言,需要返回某些内容,如果您遇到这种情况,则您将文件determineLoggedUser.php
叫给他,他直接进入您的then
函数,期望什么都不返回。
尝试类似的方法:
const ajax = $.post('determineLoggedUser.php',{
}).then(result => {
return res.json(); // In case of backend return json...
}).then(data => {
return console.log(data);
});
console.log(ajax)