javascript - 在syncronius函数中使用asyncronius函数的值

标签 javascript

首先,请原谅我糟糕的英语。我不习惯用英语写作。

我正在使用 Node.js,并且我有一些变量,这些变量有时从异步函数获取其值,有时通过直接赋值(例如:

async(function(data) {
    var x= data.something
}; or x = 5;)

问题是后来共享了代码,这迫使我复制代码。 在syncronius脚本中,我通常会使用if..else语句来分隔案例并分配。例如:

if(boolivar){
    var x = niceFunc();
}
else {
    var x = 5;
}
coolFunc(x);

现在我被迫这样做:

if(boolivar){
    niceFUnc(function(X){
        coolFunc(X);
    }
}
else{
    var x = 5;
    coolFunc(X);
}

有人知道如何解决我的问题吗? 我考虑过强制异步函数同步,但是: A。我不知道怎么办 b.这有点破坏了整个要点

最佳答案

我基本上会像你一样做,除了我会抽象同步/异步调用,这样它不会对使用它的代码产生任何影响,幕后真正发生的事情(忽略坏函数名称;我不知道你的代码是做什么的):

function doNiceFunc(boolivar, callback) {
    if (boolivar) {
        niceFUnc(function(x) {
            callback(x);
        });
    } else {
        callback(5);
    }
}

现在,从外部看,doNiceFunc 在两种情况下看起来都是一样的:

doNiceFunc(boolivar, function(x) {
    coolFunc(x);
});

我在一个库中使用了这种精确的模式,该库检索​​的数据有时可以立即可用,有时必须从网络检索。该库的用户不必关心在任何给定时间是哪种情况,因为两种情况下的调用看起来都是相同的。

关于javascript - 在syncronius函数中使用asyncronius函数的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21210879/

相关文章:

javascript - 执行条件 ng-if 检查的 "angular"方法是什么?

javascript - Webpack:使用 ng-include 的 require

javascript - 在 `install` 之前将状态信息传递给服务人员

javascript - 通过过滤未定义计算对象数组的平均值

javascript - HTML5 拖放 - 不适用于 iOS 12.1.2(Safari 和 Chrome)

javascript - html/javascript 链接到本地​​文件

javascript - Highcharts 缩放 2 个图表 - 重置缩放问题

javascript - 在 Javascript 中处理数据库查询

javascript - 返回 true,破坏 javascript 中的代码

javascript - 在 AngularJS 中打开新窗口或新选项卡时停止、启动和销毁间隔