JSFiddle - React, Tailwind, and code Playground
JavaScript
function If(condition) {
condition = Boolean(condition);
var promise = Promise[condition ? 'resolve' : 'reject'](condition),
done = false;
var pseudo = {
then: function(res) {
promise.then(res);
return pseudo;
},
ElseIf: function(newCondition) {
if (done)
throw new Error('this condition are closen by Else()');
if (condition)
return pseudo;
return If(!condition && newCondition); // предыдущее условие должно быть false
},
Else: function() {
if (done)
throw new Error('this condition are closen by Else()');
done = true;
pseudo.then = function(rej) {
promise.catch(rej);
return pseudo;
};
return pseudo;
}
};
return pseudo;
};
var i = 7;
If(i == 0) // If - начинающая конструкция
.then(alert.bind(null, 0))
.ElseIf(i == 1) // ElseIf может быть сколько угодно..
.then(alert.bind(null, 1))
.ElseIf(i == 2) // .. действительно много..
.then(alert.bind(null, 2))
.ElseIf(i == 3) // .. и даже больше!
.then(alert.bind(null, 3))
.Else() // Else - только одна и только последняя!
.then(alert.bind(null, 'i > 3'))
.Else() // будет ошибка
.then(alert.bind(null, 'не сработает'))