Promise.all test bench
Promise all rejection
by Stephane de Luca
HTML
<div id="app"></div>
CSS
body {
background: #20262E;
padding: 20px;
font-family: Helvetica;
}
#app {
background: #fff;
border-radius: 4px;
padding: 20px;
transition: all 0.2s;
}
li {
margin: 8px 0;
}
h2 {
font-weight: bold;
margin-bottom: 15px;
}
.done {
color: rgba(0, 0, 0, 0.3);
text-decoration: line-through;
}
input {
margin-right: 5px;
}
React
/*
class TodoApp extends React.Component {
constructor(props) {
super(props)
this.state = {
items: [
{ text: "Learn JavaScript", done: false },
{ text: "Learn React", done: false },
{ text: "Play around in JSFiddle", done: true },
{ text: "Build something awesome", done: true }
]
}
}
render() {
return (
<div>
<h2>Todos: </h2>
<ol>
{this.state.items.map(item => (
<li key={item.id}>
<label>
<input type="checkbox" disabled readOnly checked={item.done} />
<span className={item.done ? "done" : ""}>{item.text}</span>
</label>
</li>
))}
</ol>
</div>
)
}
}
ReactDOM.render(<TodoApp />, document.querySelector("#app"))
*/
/// Run FP Code
testBench(0)
// Voila la méthode Promise pour gérer les appelles d’API
// A promise that resolves after a given time and reject when given 2000
const timeOut = (url) => {
const duration = 2000
return new Promise((resolve, reject) => {
const toBeRejected = url.substring('soc')
console.log(`~> to be rejected? ${toBeRejected} in ${duration/1000}s: ${url}…`)
setTimeout(() => {
if (toBeRejected) {
reject(`Rejected ${url}`)
} else {
resolve(`Completed ${url}`)
}
}, duration)
})
}
const getFetchAPI = (url) => {
return timeOut(url)
}
const testBench = (gender) => {
const installation = '12'
const select = '1'
//React.useEffect(() => {
var promises = []
if (gender === 0) {
promises.push(getFetchAPI(`victron/stats/summary?installationId=${installation}&periodId=${select}`))
promises.push(getFetchAPI(`victron/stats/soc?installationId=${installation}&periodId=${select}`))
}
else if (gender === 1) {
promises.push(getFetchAPI(`victron/stats/consumption?installationId=${installation}&periodId=${select}`))
...