Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/89.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 jQuery如何在其$.ajax方法中实现async:false?_Javascript_Jquery_Xcode_Asynchronous - Fatal编程技术网

Javascript jQuery如何在其$.ajax方法中实现async:false?

Javascript jQuery如何在其$.ajax方法中实现async:false?,javascript,jquery,xcode,asynchronous,Javascript,Jquery,Xcode,Asynchronous,我有一个问题,但我想我应该用另一种方式来问它,以撒下更大的网。我还没有(据我所知)找到一个可行的解决办法 我希望XCode发出一个JavaScript命令,并从executeSql回调返回一个返回值 根据我所阅读的研究,我无法发出同步executeSql命令。我最近一次尝试旋转锁,直到收到回叫。但这也没有奏效。也许我的旋转没有给回调返回的机会(参见下面的代码) 问:对于Ajax,jQuery怎么会有async=false参数?XHR与executeSql命令有什么不同吗 以下是我迄今为止的概念证

我有一个问题,但我想我应该用另一种方式来问它,以撒下更大的网。我还没有(据我所知)找到一个可行的解决办法

我希望XCode发出一个JavaScript命令,并从executeSql回调返回一个返回值

根据我所阅读的研究,我无法发出同步executeSql命令。我最近一次尝试旋转锁,直到收到回叫。但这也没有奏效。也许我的旋转没有给回调返回的机会(参见下面的代码)

问:对于Ajax,jQuery怎么会有async=false参数?XHR与executeSql命令有什么不同吗

以下是我迄今为止的概念证明:(请不要笑)

//首先定义多次引用的任何dom元素。
var dom={};
dom.TestID=$('#TestID');//
dom.msg=$('#msg');/
window.dbo=openDatabase('POC','1.0','Proof-Of-Concept',1024*1024);//1MB
!函数($,窗口,未定义){
var Variables={};//从一个函数传递到另一个函数的变量。
Variables.Ready=new$.Deferred();
Variables.DropTableDeferred=新的$.Deferred();
Variables.CreateTableDeferred=新的$.Deferred();
window.dbo.transaction(函数(myTrans){
myTrans.executeSql(
“跌落台试验;”,
[],
Variables.DropTableDeferred.resolve()
//,WebSqlError
);
});
$.when(Variables.DropTableDeferred).done(function(){
window.dbo.transaction(函数(myTrans){
myTrans.executeSql(
'如果不存在,则创建表测试'
+“(TestID整数不是空主键”
+“,TestSort Int”
+ ');',
[],
Variables.CreateTableDeferred.resolve(),
WebSqlError
);
});
});
$.when(Variables.CreateTableDeferred).done(函数(){
对于(变量i=0;i<10;i++){
我的功能(i);
};
Variables.Ready.resolve();
函数myFunction(i){
window.dbo.transaction(函数(myTrans){
myTrans.executeSql(
'插入测试(TestID,TestSort)值(?,)',
[
我
,i+100000
]
,函数(){}
,WebSqlError
)
});
};
});
$.when(Variables.Ready).done(function(){
$(“#保存”).removeAttr('disabled');
});
}(jQuery,窗口);
!函数($,窗口,未定义){
var变量={};
$(文档)。在('单击','保存',函数()上){
var local={};
local.result=barcode.Scan(dom.TestID.val());
console.log(local.result);
});
var mySuccess=函数(事务、参数){
var local={};
for(local.i=0;local.i”);
}
dom.msg.append(result.message);
}
}(jQuery,窗口);
XHR与executeSql命令有什么不同吗

有点

对于Ajax,jQuery怎么会有async=false参数

Ajax,或者更确切地说,并不是严格限制为异步的——不过,正如建议的那样,它是首选的

jQuery.ajax()
async
选项与以下参数的
boolean async
关联:

如果运行脚本的环境没有实现这个接口,那么您就只能使用异步API,
return
ing结果将不可行。由于您怀疑的原因,您不能强制阻止/等待异步任务:

也许我的旋转没有给回调返回的机会(参见下面的代码)

XHR与executeSql命令有什么不同吗

有点

对于Ajax,jQuery怎么会有async=false参数

Ajax,或者更确切地说,并不是严格限制为异步的——不过,正如建议的那样,它是首选的

jQuery.ajax()
async
选项与以下参数的
boolean async
关联:

如果运行脚本的环境没有实现这个接口,那么您就只能使用异步API,
return
ing结果将不可行。由于您怀疑的原因,您不能强制阻止/等待异步任务:

也许我的旋转没有给回调返回的机会(参见下面的代码)

我认为
new$.Deferred()
不是必需的
$.Deferred()
// First define any dom elements that are referenced more than once.
var dom = {};
dom.TestID = $('#TestID'); // <input id="TestID">
dom.msg = $('#msg'); // <div id="msg"></div>

window.dbo = openDatabase('POC','1.0','Proof-Of-Concept', 1024*1024); // 1MB

!function($, window, undefined) {
    var Variables = {}; // Variables that are to be passed from one function to another.

    Variables.Ready = new $.Deferred();
    Variables.DropTableDeferred = new $.Deferred();
    Variables.CreateTableDeferred = new $.Deferred();
    window.dbo.transaction(function(myTrans) {
        myTrans.executeSql(
            'drop table Test;',
            [],
            Variables.DropTableDeferred.resolve()
            // ,WebSqlError
        );
    });
    $.when(Variables.DropTableDeferred).done(function() {
        window.dbo.transaction(function(myTrans) {
            myTrans.executeSql(
                'CREATE TABLE IF NOT EXISTS Test' 
                + '(TestID Integer NOT NULL PRIMARY KEY'
                + ',TestSort Int'
                + ');',
                [],
                Variables.CreateTableDeferred.resolve(),
                WebSqlError
            );
        });
    });

    $.when(Variables.CreateTableDeferred).done(function() {
        for (var i=0;i < 10;i++) {
            myFunction(i);
        };
        Variables.Ready.resolve();
        function myFunction(i) {
            window.dbo.transaction(function(myTrans) {
                myTrans.executeSql(
                    'INSERT INTO Test(TestID,TestSort) VALUES(?,?)',
                    [
                        i
                        ,i+100000
                    ]
                    ,function() {}
                    ,WebSqlError
                )
            });
        };
    });
    $.when(Variables.Ready).done(function() {
        $('#Save').removeAttr('disabled');
    });
}(jQuery, window);

!function($, window, undefined) {
    var Variables = {};

    $(document).on('click','#Save',function() {
        var local = {};
        local.result = barcode.Scan(dom.TestID.val());
        console.log(local.result);
    });


    var mySuccess = function(transaction, argument) {
        var local = {};

        for (local.i=0; local.i < argument.rows.length; local.i++) {
            local.qry = argument.rows.item(local.i);
            Variables.result = local.qry.TestSort;
        }
        Variables.Return = true;
    };
    var myError = function(transaction, argument) {
        dom.msg.text(argument.message);
        Variables.result = '';
        Variables.Return = true;
    }

    var barcode = {};
    barcode.Scan = function(argument) {
        var local = {};

        Variables.result = '';
        Variables.Return = false;
        window.dbo.transaction(function(myTrans) {
            myTrans.executeSql(
                 'SELECT * FROM Test WHERE TestID=?'
                ,[argument]
                ,mySuccess
                ,myError
            )
        });
        for (local.I = 0;local.I < 3; local.I++) { // Try a bunch of times.
            if (Variables.Return) break; // Gets set in mySuccess and myError
            SpinLock(250);
        }
        return Variables.result;
    }

    var SpinLock = function(milliseconds) {
        var local = {};
        local.StartTime = Date.now();
        do  {
        } while (Date.now() < local.StartTime + milliseconds);
    }

    function WebSqlError(tx,result) {
        if (dom.msg.text()) {
            dom.msg.append('<br>');
        }
        dom.msg.append(result.message);
    }

}(jQuery, window);
void open(
   DOMString method,
   DOMString url,
   optional boolean async,    // <---
   optional DOMString user,
   optional DOMString password
);
window.dbo = openDatabaseSync('POC','1.0','Proof-Of-Concept', 1024*1024);

var results;
window.dbo.transaction(function (trans) {
    results = trans.executeSql('...');
});