這是解釋問題有點棘手的情況之一,但我會盡力解釋它,以便我可以在這里獲得一些幫助。
基本上我有一個專案,即使他們沒有互聯網連接,我也需要允許用戶登錄/注銷。
每次他們離線登錄/注銷時,我都會存盤 2 個陣列并推送到它,以便我可以根據他們登錄/注銷的時間相應地將它們登錄/注銷。
陣列如下所示:
var logins = [{"id":1,"dateAdded":"2021-10-29T18:27:35.754Z"}, {"id":2,"dateAdded":"2021-10-29T18:28:35.754Z"}, {"id":3,"dateAdded":"2021-10-30T18:28:35.754Z"}];
var logouts = [{"id":1,"dateAdded":"2021-10-29T18:27:50.754Z"}, {"id":2,"dateAdded":"2021-10-29T19:28:35.754Z"}];
為了解釋陣列,id 是id他們登錄/退出的帳戶的 id 。的dateAdded基本上是他們的時間日期登錄/退出。
現在,問題是:當我以下面的代碼/方式運行我的 AJAX 代碼時,它作業正常,但所有內容都同時執行,這會導致登錄/注銷系統泛濫,因此它要么不會登錄,要么不會注銷帳戶。
for(let dataSings of logins){
//do my ajax stuff here
}
for(let dataSingo of logouts){
//do my ajax stuff here
}
我需要做的是想出一個很好的解決方案來查看這些陣列,然后將它們登錄,然后查看具有相同 id 的注銷陣列,然后他們再次將它們注銷,依此類推。 ..
所有這些都基于它存盤在陣列中的時間(dateAdded).
我希望我能很好地解釋這一點,以便對其有所了解。
uj5u.com熱心網友回復:
回答您的問題(即使我認為該方法有缺陷)
你應該有一個包含所有動作的陣列,并且為每個動作存盤它是什么型別的資訊。
并等待每個請求發送,您可以使用awaitand async。
let actions = [{
"type": "login",
"id": 1,
"dateAdded": "2021-10-29T18:27:35.754Z"
}, {
"type": "login",
"id": 2,
"dateAdded": "2021-10-29T18:28:35.754Z"
}, {
"type": "login",
"id": 3,
"dateAdded": "2021-10-30T18:28:35.754Z"
},
{
"type": "logout",
"id": 1,
"dateAdded": "2021-10-29T18:27:50.754Z"
}, {
"type": "logout",
"id": 2,
"dateAdded": "2021-10-29T19:28:35.754Z"
}
]
async function run() {
// sort the array
actions.sort(function(a, b) {
return new Date(b.dateAdded) - new Date(a.dateAdded);
});
for (let action of actions) {
if (action.type === 'login') {
await fetch('/login', {
method: "POST"
// body: data
})
} else if (action.type === 'logout') {
await fetch('/logout', {
method: "POST"
// body: data
})
}
}
}
run();
如果你真的想要有兩個陣列,你可以合并它們,然后在這之前將它們添加type到專案中。(請注意,login和logout中的元素與中的元素相同merged)
var logins = [{
"id": 1,
"dateAdded": "2021-10-29T18:27:35.754Z"
}, {
"id": 2,
"dateAdded": "2021-10-29T18:28:35.754Z"
}, {
"id": 3,
"dateAdded": "2021-10-30T18:28:35.754Z"
}];
var logouts = [{
"id": 1,
"dateAdded": "2021-10-29T18:27:50.754Z"
}, {
"id": 2,
"dateAdded": "2021-10-29T19:28:35.754Z"
}];
let merged = [
...logins.map(item => {
item.type = 'login'
return item
}),
...logouts.map(item => {
item.type = 'logout'
return item
})
]
console.dir(merged)
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/342706.html
標籤:javascript 数组
