[英]create a promise chain
我需要用用戶數據創建一個 object。
2.第二個是他的角色,根據角色,你需要為他編寫一個email(如果用戶是admin - email應該以admin.Z4D236D9A2D102C5FE6AD1C50DA4BEC5結尾)和其他角色類似
3.此外,如果用戶是管理員,則需要調用 function,將用戶 id 傳入其中,並根據 id 返回一個數字,該數字將指示其組中的人數(對於此 function,您可以用一個promise,你可以自己想id和人數匹配,可以是object,key為id,值為person。{1:3, 2:5}等)
4.總的來說,如果用戶是管理員,並且鏈已經開始忽略組中的人員列表,則僅使用 throw new Error(錯誤文本)拋出錯誤。 如果用戶是管理員,但組中的人數超過了指示,則拋出相應的錯誤,promins 鏈應該以一個錯誤結束,說明發生了什么。 要構建此類場景,您可以更改 Promise 的初始 state,如有必要,將其拒絕。 傳輸的相同數據也可以更改,但我們不更改 setTimeout 中的時間。
const promise1 = new Promise(resolve) => {
setTimeout(() => Promise.resolve('Madrid'), 1000); // location
}
const promise2 = new Promise(resolve) => {
setTimeout(() => Promise.resolve('admin'), 4000); // three role - guest, user, admin
}
const promise3 = new Promise(resolve) => {
setTimeout(() => Promise.resolve('1'), 2000); // id user, number can be any
}
const promise4 = new Promise(resolve) => {
setTimeout(() => Promise.resolve(['Alex', 'Vlad', 'Marta', 'Alexandr', 'Stefan']), 1000); // an array that shows the people in a person's group
}
鑒於承諾鏈,有必要重寫這是我的解決方案
let promise = new Promise((resolve) => {
setTimeout(() => resolve(city), 1000);
}).then((role) => {
if(role != 'admin') {
throw new Error('not admin')
}
return new Promise((resolve) => {
setTimeout(() => resolve(admin), 4000);
})
}).then((id) => {
return new Promise((resolve) => {
setTimeout(() => Promise.resolve(id), 2000);
})
}).then((people) => {
return new Promise((resolve) => {
setTimeout(() => Promise.resolve(people), 1000);
})
})
但是如何編寫一個 email 並顯示必要的錯誤以及角色和人數,最后返回 object 對嗎? 請幫忙
Ciao,如果您使用 Promise,您可以resolve
或reject
promise 結果。 就像是:
const promise1 = () => {
return new Promise(resolve, reject) => {
if (/*condition*/) setTimeout(() => resolve('Madrid'), 1000);
else reject("this is an error");
}
}
使用這種模式,您可以像這樣重寫 promise 鏈:
promise1()
.then((result) => {
// here result = "Madrid"
// well lets call the second promise promise2
})
.catch((error) => {
//here error = "this is an error"
// manage the error
});
通過這種方式,您可以輕松管理 promise 結果或錯誤。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.