如何正确地打破承诺链?
Menus.getCantinas().then(function(cantinas){ // `then` is how we chain promises Menus.cantinas = cantinas; // if we need to aggregate more than one promise, we `$.when` return $.when(Menus.getMeals(cantinas), Menus.getSides(cantinas));}).then(function(meals, sides){ // in jQuery `then` can take multiple arguments Menus.sides = sides; // we can fill closure arguments here Menus.meals = meals; return Menus.getAdditives(meals, sides); // again we chain}).then(function(additives){ Menus.additives = additives; return Menus; // we can also return non promises and chain on them if we want}).done(function(){ // done terminates a chain generally. // edit HTML here});
cantinas.length == 0
var emptyResult = false;Menus.getCantinas().then(function(cantinas){ Menus.cantinas = cantinas; if (cantinas.length == 0) { emptyResult = true; return "emptyResult"; //unuglify me } return $.when(Menus.getMeals(cantinas), Menus.getSides(cantinas));}).then(function(meals, sides){ if (meals == "emptyResult") return meals; //look at my ugliness... Menus.sides = sides; Menus.meals = meals; return Menus.getAdditives(meals, sides);}).then(function(additives){ if (additives == "emptyResult") return additives; Menus.additives = additives; return Menus;}).done(function(){ if (emptyResult) //do empty result stuff else // normal stuff});
蓝山帝景
慕田峪7331174
萧十郎