javascript - catch rejection in $q service without triggering success callbacks -
i have method returns $q (q) promise:
var subtypesmetadataresolved = restservice.getnodesubtypesmetadata();   now, when metadata available, want run 2 functions process them. first, thought chain them this:
subtypesmetadataresolved.then(createnodes).then(preparedataforwidgets)   but realized since both require data returned subtypesmetadataresolved promise need return data createnodes success callback it's passed preparedataforwidgets, not option. made this:
subtypesmetadataresolved.then(createnodes) subtypesmetadataresolved.then(preparedataforwidgets)   which works need. problem how rejection callback called when subtypesmetadataresolved rejected , don't neither createnodes nor preparedataforwidgets callbacks triggered in case? have following, after triggering nodesubtypesmetadataerrorcb triggers createnodes callback:
subtypesmetadataresolved.catch(nodesubtypesmetadataerrorcb); subtypesmetadataresolved.then(createnodes) subtypesmetadataresolved.then(preparedataforwidgets)   here how reject subtypesmetadataresolved:
edit:
function getnodesubtypesmetadata(subtype) {     return $q.when("success!").then(function(){         debugger         throw new error();     }); }  var subtypesmetadataresolved = getnodesubtypesmetadata(); subtypesmetadataresolved.then(successcb1); subtypesmetadataresolved.then(successcb2); subtypesmetadataresolved.catch(nodesubtypesmetadataerrorcb);  $q.all([     typesmetadataresolved,     subtypesmetadataresolved ]).then(init);      
the problem assigning promise handled error subtypesmetadataresolved. if call .then() on this, will call then() callbacks because .catch() callback "handling" error.
to solve this, assign unhandled promise variable, , call .catch()/.then() on that:
var subtypesmetadataresolved = getnodesubtypesmetadata();  subtypesmetadataresolved.catch(nodesubtypesmetadataerrorcb); subtypesmetadataresolved.then(function(){     debugger }); subtypesmetadataresolved.then(function () {     debugger });   as matter of style, suggest placing catch line after then lines, should have no observable effect on code's behavior.
Comments
Post a Comment