相关疑难解决方法(0)

如何让jQuery执行同步而非异步的Ajax请求?

我有一个JavaScript小部件,它提供标准的扩展点.其中之一就是beforecreate功能.它应该返回false以防止创建项目.

我使用jQuery在这个函数中添加了一个Ajax调用:

beforecreate: function (node, targetNode, type, to) {
  jQuery.get('http://example.com/catalog/create/' + targetNode.id + '?name=' + encode(to.inp[0].value),

  function (result) {
    if (result.isOk == false) 
        alert(result.message);
  });
}
Run Code Online (Sandbox Code Playgroud)

但我想阻止我的小部件创建项目,所以我应该返回false母函数,而不是回调.有没有办法使用jQuery或任何其他浏览器中的API执行同步AJAX请求?

javascript ajax jquery asynchronous

1173
推荐指数
13
解决办法
69万
查看次数

Node.js异步同步

我怎样才能做到这一点

var asyncToSync = syncFunc();

function syncFunc() {
    var sync = true;
    var data = null;
    query(params, function(result){
        data = result;
        sync = false;
    });
    while(sync) {}
    return data;
}
Run Code Online (Sandbox Code Playgroud)

我试图从异步中获取同步功能,我需要它使用FreeTds异步查询作为同步功能

javascript asynchronous node.js

23
推荐指数
3
解决办法
5万
查看次数

等待从javascript函数返回直到满足条件

这是一个奇怪的问题.我有一个客户端对象,我正在使用Crockford式公共/私人成员构建:

var client = function() {
  var that, remote_data, other_data; 

  // add public interface
  that.doStuff = function(){...}

  // wait for remote resources to load
  remote_data = jsonRequest1();
  other_data  = jsonRequest2();

  return that;
};
Run Code Online (Sandbox Code Playgroud)

我遇到的问题是我需要加载一些远程JSON资源,然后再返回新的'that'对象(它指示就绪客户端).数据以异步方式返回(显然),我设置布尔变量以指示每个远程资源何时返回.

我想过做以下事情:

return whenInitialized(function() { return that; });
Run Code Online (Sandbox Code Playgroud)

whenInitialized函数返回两个布尔标志是否为真.我将它与setInterval的组合一起使用,但我确信这不起作用.

非常感谢您的建议.

javascript closures asynchronous

10
推荐指数
1
解决办法
4万
查看次数

如何同步访问indexedDB?

indexedDB有一个规范说您可以同步访问索引数据库,但尚未实现.

我只是想知道是否有办法让它手动同步,

我的JavaScript看起来像这样,

var trans = databaseAsync.transaction(["mapTile"], IDBTransaction.READ_WRITE);
var store = trans.objectStore("mapTile");
var keyRange = IDBKeyRange.bound(evt.data[0], evt.data[0]);
var cursorRequest = store.openCursor(keyRange);

// can you put some kind of wait in here?

cursorRequest.onsuccess = function(e)
{
    var result = e.target.result;
    if(!!result == false)
    {
    }
}
Run Code Online (Sandbox Code Playgroud)

那么你可以在那里放一些东西让它等到onsuccess方法被调用后再继续吗?

我想这样做的原因是上面的代码包含在这个方法中,

dojo.extend(esri.layers.ArcGISTiledMapServiceLayer, {
      getTileUrl : function(level, row, col)
      {
          // blah
          return url;
      }
Run Code Online (Sandbox Code Playgroud)

所以它是一个ESRI图块层(它会将图块加载到我的网页上的地图上),并且该方法需要立即返回特定图块的网址.它将是一个加载图像的URL,如果它没有缓存在数据库中,或者这个,

data:image;base64,*BASE64DATA*
Run Code Online (Sandbox Code Playgroud)

其中BASE64DATA是以前缓存的数据库中的数据.

我之前使用的是localStorage,它同步工作,但是有5MB的限制,所以我想我会尝试使用indexedDB.

javascript indexeddb

9
推荐指数
1
解决办法
7122
查看次数

标签 统计

javascript ×4

asynchronous ×3

ajax ×1

closures ×1

indexeddb ×1

jquery ×1

node.js ×1