[问题] call api promise改成同步执行

楼主: pthread (QQ)   2023-09-28 14:53:43
以下是程式码片断
变量sss要怎么取得call API传回来的值
在promise外的sss印出来还是空的,好像没有同步
请教要如何改才会是同步的,谢谢
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>标题</title>
<script
src="https://code.jquery.com/jquery-3.7.0.min.js"
integrity="sha256-2Pmvv0kuTBOenSvLm6bvfBSSHrUJ+3A7x6P5Ebd07/g="
crossorigin="anonymous"></script>
<script src="https://cdn.jsdelivr.net/npm/axios/dist/axios.min.js"></script>
<script>
$(function(){
console.log('开始');
var sss = "";
var pp = get("");
Promise.all([pp]).then(function(responseArray){
console.log(responseArray);
responseArray.forEach(function(response,index){
var seed = response.info.seed;
console.log(seed);
sss = seed;
console.log(sss);
});
});
console.log(sss);
});
function get(url) {
return new Promise(function(success,fail){
axios.get('https://randomuser.me/api/')
.then(function (response) {
// handle success
console.log(response);
var status = response.status;
console.log(status);
if(status=="200"){
return success(response.data);
}else{
return fail();
}
})
.catch(function (error) {
// handle error
console.log(error);
fail();
})
.finally(function () {
// always executed
});
});
}
</script>
</head>
<body>
</body>
</html>
作者: LPH66 (-6.2598534e+18f)   2023-09-29 07:50:00
Promise 本身就已经不是同步的了, 你要做的是在 then()里面的函数里 (那里才有收到回应) 去做后续操作像是你这里的 forEach 那样, 写在那个函数里
作者: VdustR (京)   2023-10-06 22:07:00
感觉你需要的是 async await
作者: y3k (激流を制するは静水)   2022-01-02 16:10:00
await
作者: qoo02255 (qoo02255)   2022-05-19 21:40:00
var 已经不推荐使用很久了,容易有bug,换成let 比较好

Links booklink

Contact Us: admin [ a t ] ucptt.com