javascript - 如何从这个 AJAX 调用返回结果?
问题描述
我有以下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()
返回loggedUser
$.post AJAX 调用设置后的值。同时,我希望函数调用DetermineLoggedUser()
等待,使用 async/await。所以它看起来有点像这样:
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 调用创建的承诺以使“等待”工作,我想知道如何同时返回设置为loggedUser
inside的值determineLoggedUser()
?
解决方案
你的第一点是正确的——你从你的DetermineLoggedUser()
函数中返回 Promise 是正确的。然后,调用代码可以将 a 附加.then()
到该 Promise 对象(而不是将其附加在没有那么有用的DetermineLoggedUser 函数中),您可以在其中检索值,然后执行您需要的任何其他依赖于它的函数。
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();
您无法逃避它是异步的事实,但您可以更好地使用它。
推荐阅读
- java - Javafx,有没有办法检查按钮的状态并根据其状态执行 if 语句?
- python - python -m pip install --upgrade pip 不起作用
- python - 谷歌或工具 - 火车调度问题
- c++ - 如何解决此“类型参数与参数不兼容”错误?
- html - 无法将按钮放在出现在图片下方或上方的图片上
- linux - 在linux中将行转置为列
- javascript - For Each 不适用于通过单击创建的元素
- react-native - API 共享 react-native
- haskell - 为清楚起见制作新类型/数据是不好的形式吗?
- dropdown - 如何在google app-maker的下拉列表中获取所选项目的记录ID