Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/423.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/image-processing/2.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_Sqlite - Fatal编程技术网

Javascript在第一行代码完成之前执行第二行代码

Javascript在第一行代码完成之前执行第二行代码,javascript,sqlite,Javascript,Sqlite,我需要运行SQLSELECT语句并存储结果。然后我需要将这些结果传递到一个函数中,并根据给定的数据点创建一个图形。请参阅下面的代码 var dataKWhr = getCoverageAndKWhr(); console.log(dataKWhr); createGraph(dataKWhr); console.log("Created graph"); getcoverage和kwhr函数开始运行,但原始函数的其余部分继续运行log语句和createGraph。此操作失败,因为此时未定义

我需要运行SQLSELECT语句并存储结果。然后我需要将这些结果传递到一个函数中,并根据给定的数据点创建一个图形。请参阅下面的代码

var dataKWhr = getCoverageAndKWhr();
console.log(dataKWhr);

createGraph(dataKWhr);

console.log("Created graph");
getcoverage和kwhr
函数开始运行,但原始函数的其余部分继续运行log语句和
createGraph
。此操作失败,因为此时未定义dataKWhr,因为其值尚未从
getCoverage和KWhr()返回

我不希望延迟固定的秒数。有没有办法等到第一行结束后再继续


这是一个带有jQueryMobile的PhoneGap应用程序。目前正在Android上测试。

如果没有GetCoverage和KWHR函数背后的代码,很难判断到底发生了什么

可能某些执行路径没有返回值


GetCoverage和KWhr也可以异步执行。如果是这种情况,您必须找到一种方法将GetCoverage和KWhr转换为同步调用,或者传递一个回调函数,一旦GetCoverage和KWhr的执行完成,就会调用该回调函数。

如果没有GetCoverage和KWhr函数后面的代码,很难判断到底发生了什么

可能某些执行路径没有返回值


GetCoverage和KWhr也可以异步执行。如果是这种情况,您必须找到将GetCoverage和KWhr转换为同步调用的方法,或者传递一个回调函数,该函数将在GetCoverage和KWhr执行完成后调用。

任何I/O操作都肯定是异步的。对SQLite/WebSQL DB的任何调用都将回调作为其构造的一部分。你需要利用它们。(然后,当您开始讨厌回调设计模式时,您可能希望转换为。)

可以肯定,任何I/O操作都将是异步的。对SQLite/WebSQL DB的任何调用都将回调作为其构造的一部分。你需要利用它们。(然后,当您开始讨厌回调设计模式时,您可能希望转换为。)

我发现,当您使用Javascript编程时,更容易假设每个函数都是异步的。这就是为什么像这样的东西是不可以的:

var dataKWhr = getCoverageAndKWhr();
createGraph(dataKWhr);
您需要使用回调,这是确保在使用变量之前填充变量的唯一现实方法。所以它看起来应该更像这样:

getCoverageAndKWhr(createGraph);
我不知道GetCoverage Ankwhr中有什么,但是如果您在其中进行ajax调用,它看起来会像这样:

function getCoverageAndKWhr(callBack) { 
    $.ajax({
        type: 'GET',
        //whatever else
        success: function (data) { 
            callback(data.KWhr); 
        }
    });
}

我发现,当您使用Javascript编程时,更容易假设每个函数都是异步的。这就是为什么像这样的东西是不可以的:

var dataKWhr = getCoverageAndKWhr();
createGraph(dataKWhr);
您需要使用回调,这是确保在使用变量之前填充变量的唯一现实方法。所以它看起来应该更像这样:

getCoverageAndKWhr(createGraph);
我不知道GetCoverage Ankwhr中有什么,但是如果您在其中进行ajax调用,它看起来会像这样:

function getCoverageAndKWhr(callBack) { 
    $.ajax({
        type: 'GET',
        //whatever else
        success: function (data) { 
            callback(data.KWhr); 
        }
    });
}

您需要将回调函数传递给GetCoverage和KWhr(),以使其按您希望的方式工作。如果GetCoverage和KWhr中包含任何异步代码,则需要一个回调函数,如@errolfizgerald所述。可能的重复项需要将回调函数传递给GetCoverage和KWhr()为了让它按您想要的方式工作。如果GetCovernandKWHR中有任何异步代码,您将需要一个回调函数,如@ErrolFizGerald所说。可能是Thx的重复,我需要一个回调函数。Thx,我需要一个回调函数。