【问题标题】:Async call within if-conditionif条件下的异步调用
【发布时间】:2015-12-24 20:54:26
【问题描述】:

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

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

在 if 中处理异步调用的最佳方式是什么。

【问题讨论】:

  • 您到底想“修复”什么?这看起来像一个普通的旧回调地狱。如果你想让代码更具可读性和可维护性,请改用 Promises。

标签: node.js if-statement asynchronous


【解决方案1】:

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

var promise;

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

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

如果没有异步版本并且它们是节点样式函数,您可以使用您选择的承诺库来承诺它们。

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
});

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-11-17
    • 2022-01-26
    • 2017-04-17
    • 1970-01-01
    • 2015-01-11
    • 2013-06-01
    • 1970-01-01
    相关资源
    最近更新 更多