if条件下的异步调用

时间:2015-12-24 12:04:30

标签: node.js if-statement asynchronous

我想知道在if条件下处理异步调用的正确方法是什么。例如,我想修复以下代码。

if(criterium2){
    function1(value, function(error, result){
    })
    }
else {
    function2(value, function(error, result){
    })
    }

在if。

中处理异步调用的最佳方法是什么

1 个答案:

答案 0 :(得分:0)

使用Promises。如果这些函数有异步版本,那就是

var promise;

if(criterion) {
  promise = function1Async(value);
} 
else {
  promise = function2Async(value);
}

promise.then(function(resolvedResult) {
  // handle result
});

如果没有异步版本并且它们是节点样式函数,您可以使用您选择的promise库对它们进行宣传。

var Promise = require('bluebird'),
    promise,
    function1Async = Promise.promisify(function1),
    function2Async = Promise.promisify(function2);

if(criterion) {
  promise = function1Async(value);
} 
else {
  promise = function2Async(value);
}

promise.then(function(resolvedResult) {
  // handle result
});