Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/477.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何使一行等待函数返回_Javascript - Fatal编程技术网

Javascript 如何使一行等待函数返回

Javascript 如何使一行等待函数返回,javascript,Javascript,我有两个文件 //init.js var x = getMasterList(location); console.log(x); console.log("should have printed list"); 及 控制台的输出是 undefined should have printed list In function 问题是,由于javascript的异步性质,它在分配“x”之前会打印出“x”。我看过promises,但它似乎对我没有帮助,因为它没有改变异步行为。我还研究了回调,但似

我有两个文件

//init.js
var x = getMasterList(location);
console.log(x);
console.log("should have printed list");

控制台的输出是

undefined
should have printed list
In function
问题是,由于javascript的异步性质,它在分配“x”之前会打印出“x”。我看过promises,但它似乎对我没有帮助,因为它没有改变异步行为。我还研究了回调,但似乎无法使它们适用于多个文件

有什么方法可以绕过这个问题,使其仅在“x”有值后打印?

使用,您可以非常轻松地实现这一点

read.js

init.js


你需要学习如何使用承诺或回调。您不明白什么?在JS中,要使用非同步函数,使用回调、承诺或异步/等待,您提供的代码不应该出现这种情况。请提供您使用的确切代码。JS是同步的,除非你明确告诉它异步调用一个函数。我想我们是在猜测//do stuff包含了一些异步的东西,如果不起作用,输出是一样的。当函数位于另一个文件中时,是否可以使用回调?
undefined
should have printed list
In function
function getMasterList(location, callback) {
    var list = [];
    //do stuff
    console.log("In function");
    callback(list);
}
var x = getMasterList(location, function(x){
    console.log(x);
    console.log("should have printed list");
});