javascript如何从参数函数中获取函数返回值

javascript如何从参数函数中获取函数返回值,javascript,plugins,cordova,parameters,return,Javascript,Plugins,Cordova,Parameters,Return,听起来像是一个基本的问题,但我一直坚持javascript变量的作用域。 我想得到一个作为参数传递给另一个函数的函数值 例如: 全局变量number1始终返回初始值“”,而不是get函数第二个参数的值 怎么了 var number1 = ''; cordova.require("applicationPreferences").get("NumTel",function (value) { number1 = value; },

听起来像是一个基本的问题,但我一直坚持javascript变量的作用域。 我想得到一个作为参数传递给另一个函数的函数值

例如: 全局变量number1始终返回初始值“”,而不是get函数第二个参数的值

怎么了

    var number1 = '';
    cordova.require("applicationPreferences").get("NumTel",function (value) {
             number1 = value;
        },
        function (error) {}
    );
   console.log("Number1 = " + number1);

由于您至少有一个异步操作,因此无法从函数中获取该值,因为该函数将在将来的某个时间被调用,而该时间是在执行
console.log()
语句很久之后

在异步编程中,必须在回调内部使用
,或者必须从回调调用另一个函数并将
值传递给它。要在javascript中使用异步编程,必须改变设计思维。您不能仅仅使用同步技术,因为代码流不再是同步的

将所有希望使用该值的逻辑移到回调本身中

cordova.require("applicationPreferences")
       .get("NumTel", function (value) {
            // put all your code here that uses value
            // or call another function and pass the value to it
            myFunc(value);
        }, function (error) {
        }
);

function myFunc(x) {
    console.log("Number1 = " + x);
}
或者,您甚至可以不使用以下匿名函数:

cordova.require("applicationPreferences")
       .get("NumTel", myFunc, function (error) {
       }
);

function myFunc(x) {
    console.log("Number1 = " + x);
}

@丹达维斯-我也添加了这个选项。工作完美。非常感谢你的清楚解释。