cjr*_*uck 5 asynchronous callback control-flow node.js
什么是解决以下控制流程的最佳方法:
我只想调用getSomeOtherDataif someData等于某个值/通过一些条件测试
在这两种情况下,我总是想打电话 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();
});
});
});
});
Run Code Online (Sandbox Code Playgroud)
对此没有很好的解决方案;我发现最好的方法是创建一个本地函数来处理剩余的常见工作,如下所示:
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();
}
});
});
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
457 次 |
| 最近记录: |