/ / Čo znamená aká je výnimka "ArgumentError: sľub už bol reťazený" a ako ju môžem debugovať? - voltrb

Čo znamená výnimka "ArgumentError: sľub už bol spojený" a ako ju môžem ladiť? - voltrb

Ja idem trochu orechy pracovať s Volt namoment. V okamihu, keď sa snažím urobiť niečo o niečo komplikovanejšie, skončím s vyňatím výnimky "ArgumentError: sľub už bol previazaný" v konzole prehliadača.

Trasovanie zásobníka nepoukazuje na to, čo môžem interpretovať ako užitočné.

To znamená, že táto chyba skutočne znamená a ako sa pokúšam nájsť príčinu?

Odošli nejaký kód, ale niektoré z týchto chýb sa objavia na zaťažení stránky bez uvedenia toho, kde je problém, takže musím zverejniť celú aplikáciu: /

odpovede:

3 pre odpoveď č. 1

Volt využíva implementáciu sľubu spoločnosti Opal, ktorú somverí, že je založený na špecifikácii A + v krajine JS. Chyba, ktorú vidíte, je, že sľub môže obsahovať iba jeden .then alebo. Každá .then alebo .fail vráti nový sľub, ktorý potom môžete oddeliť.

Môžete to urobiť takto:

promise = Promise.new
promise2 = promise.then do
..
end
promise2.then do
..
end

(upozorňujem, že pripisujem sľub2, namiesto toho, aby som znova odviazal prvý)

Ale nemôžete robiť niečo takéto:

promise = Promise.new
promise.then do
...
end

promise.then do
..
end

(Všimnite si, ako som zavolal .podľa sľubu viac ako raz)

Kompaktnejší spôsob, ako napísať prvý, je reťazec konca

promise = Promise.new

promise.then do
..
end.then do
..
end.fail do
..
end

Voltové viazania očakávajú sľub, ktorý nebolreťaze zapnuté. Tiež si myslím, že môžem urobiť to fungovať tam, kde môžete reťaz viacnásobne, aj keď som nemyslel cez všetky dôsledky tohto, takže by som mohol byť wrong.If som dostal nejaký čas, mohol by som napísať nový sľub implementácie, zvládnuť to.Ak si stále vidíte túto chybu a vyššie to nevysvetľuje, prečo je tam, dajte mi vedieť. Vďaka!