有条件地执行callback
解决以下控制stream程的最佳方法是什么?
-
我只想调用
getSomeOtherData
如果someData
等于某个值/通过一些条件testing -
在这两种情况下,我总是想调用
getMoreData
http.createServer(function (req, res) { getSomeData(client, function(someData) { // Only call getSomeOtherData if someData passes some conditional test getSomeOtherData(client, function(someOtherData) { // Always call getMoreData getMoreData(client, function(moreData) { res.end(); }); }); }); });
没有很好的解决办法 我发现的最好的办法是做一个本地的function,照顾剩下的常见工作,像这样:
http.createServer(function (req, res) { getSomeData(client, function(someData) { function getMoreAndEnd() { getMoreData(client, function(moreData) { res.end(); }); } if (someData) { getSomeOtherData(client, function(someOtherData) { getMoreAndEnd(); }); } else { getMoreAndEnd(); } }); });
这是你想要的吗?
http.createServer(function (req, res) { getSomeData(client, function(someData) { function myFunction (callback) { // Only call getSomeOtherData if someData passes some conditional test if (someData) { getSomeOtherData(client, function(someOtherData) { // Do something. }); } callback(); } myFunction(function () { // Always call getMoreData getMoreData(client, function(moreData) { res.end(); }); }); }); });