const PROMISE_STATE = {
PENDING: 'pending',
FULFILLED: 'fulfilled',
REJECTED: 'rejected'
}
function decidePromiseState(promise) {
const t = {};
return Promise.race([promise, t])
.then(v => (v === t) ? PROMISE_STATE.PENDING : PROMISE_STATE.FULFILLED)
.catch(() => PROMISE_STATE.REJECTED)
}
let a = Promise.resolve();
let b = Promise.reject();
let c = new Promise(() => {});
decidePromiseState(a).then(state => console.log(state));
decidePromiseState(b).then(state => console.log(state));
decidePromiseState(c).then(state => console.log(state));