Я пытаюсь создать именованную цепочку обещаний. Я не уверен, как этого добиться. Цель следующая:
function multiplepromises() {
var prom = function (resolve, reject) {
var lifecycleeventone = new someEvent();
var lifecycleeventtwo = new someEvent();
var lifecycleeventthree = new someEvent();
var lifecycleeventfour = new someEvent();
var lifecycleeventfive = new someEvent();
lifecycleeventone.on(function () {
try {
resolve("eventone")
} catch {
reject("eventone")
}
})
lifecycleeventtwo.on(function () {
try {
resolve("eventtwo")
} catch {
reject("eventtwo")
}
})
lifecycleeventthree.on(function () {
try {
resolve("eventthree")
} catch {
reject("eventthree")
}
})
lifecycleeventfour.on(function () {
try {
resolve("eventfour")
} catch {
reject("eventfour")
}
})
lifecycleeventfive.on(function () {
try {
resolve("eventfive")
} catch {
reject("eventfive")
}
})
maineventlikefinallySOcalledalways.on(function(){
try {
resolve("maineventlikefinallySOcalledalways")
} catch {
reject("maineventlikefinallySOcalledalways")
}
})
}
return prom
}
multiplepromises()
.onlifecycleeventoneAsProm((result)=> result) //eventone promise resolve
.onlifecycleeventoneerrorAsProm((error)=> error) //eventone
.onlifecycleeventtwoAsProm((result)=> result) //eventtwo promise resolve
.onlifecycleeventtwoerrorAsProm((error)=> error) //eventtwo
.onlifecycleeventthreeAsProm((result)=> result) //eventthree promise resolve
.onlifecycleeventthreeerrorAsProm((error)=> error) //eventthree
.onlifecycleeventfourAsProm((result)=> result) //eventfour promise resolve
.onlifecycleeventfourerrorAsProm((error)=> error) //eventfour
.onlifecycleeventfiveAsProm((result)=> result) // eventfive promise resolve
.onlifecycleeventfiveerrorAsProm((error)=> error) //eventfive
.then((result)=> result) // maineventlikefinallySOcalledalways promise resolve
.error((error)=> error) // maineventlikefinallySOcalledalways promise reject
multiplepromises()
.onlifecycleeventoneAsProm((result)=> result) //eventone promise resolve
.onlifecycleeventoneerrorAsProm((error)=> error) //eventone
.onlifecycleeventtwoAsProm((result)=> result) //eventtwo promise resolve
.onlifecycleeventtwoerrorAsProm((error)=> error) //eventtwo
.onlifecycleeventthreeAsProm((result)=> console.log("test"))
// lifecycleeventthree promise reject stops here and
// doesnt continue to .then/.error since there was no return from this lifecycle event(promise)
Я прочитал это, и это не решает цель полностью. Обработка нескольких уловов в цепочке обещаний и https://javascript.info/promise-chaining
Не хотите использовать Rx и хотите придерживаться vanilla js
oneventoneAsProm
иoneventoneerrorAsProm
и т. д.? - person Jaromanda X   schedule 02.09.2020multipromises
будет пытаться разрешить/отклонить одно обещание более одного раза... это невозможно... как только обещание будет разрешено или отклонено, оно не может быть разрешено или отклонено снова - person Jaromanda X   schedule 02.09.2020resolve
не потерпит неудачу, поэтому код не имеет смысла - person Jaromanda X   schedule 02.09.2020resolve/reject
... они разрешают (и никогда не отклонят по вышеуказанной причине) одно единственное обещание, созданное в верхней части кода - person Jaromanda X   schedule 02.09.2020function asyncFunc() { const eventEmitter = { success: [] }; setTimeout(() => { // (A) for (const handler of eventEmitter.success) { handler('DONE'); } }, 100); return eventEmitter; } asyncFunc() .success.push(x => console.log('Result: '+x));
Это то, чего я хочу добиться, но этот .success должен быть обещанием, а не событием. Не уверен, что я говорю мусор. Но я хочу знать, возможно ли это, или я буду излишне усложнять код - person Gary   schedule 02.09.2020then
и.error
. Другие событияeventone
и т. д. будут необязательными в течение жизненного цикла кода/набора действий. - person Gary   schedule 02.09.2020asyncFunc().success
? - person Jaromanda X   schedule 02.09.2020oneventoneAsProm
доonlifecycleeventoneAsProm
ничего не проясняет - этих функций не существует ... для чего они предназначены? - person Jaromanda X   schedule 02.09.2020