- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
运行道场1.8.4
使用 JsonRest(不是 JsonRestStore),我向端点发出 put 请求,然后获取结果并从请求响应中收集位置信息,如下所示:
var promise = myJsonRest.put(data).then(function(){
// act when put completes successfully
promise.ioArgs.xhr.getResponseHeader('location');
});
直到最近,这都没有出现问题。然后我开始看到一个 TypeError,其中 promise 不再包含 ioArgs(无法读取未定义的属性 xhr)。
断点和单步执行堆栈表明 ioArgs 正在被创建并返回,但它履行的 promise 不是我的 then(function () { promise.ioArgs /* etc... */ });
我找到的解决方案是将上面的代码更改为这个...
var promise = myJsonRest.put(data);
promise.then(function(){
// act when put completes successfully
promise.ioArgs.xhr.getResponseHeader('location');
});
...它工作正常,但我无法证明为什么。
不可能是myJsonRest.put()
分配的promise与 myJsonRest.put().then()
处评估的对象不同。我目前唯一的理论是 JsonRest 在它自己的异步时间上添加了落在 put()
之间的 promise 。请求和我的处理程序。由于 ioArgs 没有跨 Promise 传递,因此当它到达我的函数时它就会丢失。将我的行为( then()
)分配给 Promise,在 Promise 被触发后的行必须将我的行为放在要解决的 Promise 堆栈上的第一个位置。
任何见解都值得赞赏。
最佳答案
It cannot be that the promise assigned by
myJsonRest.put()
is not the same as the object evaluated atmyJsonRest.put().then()
.
它与 myJsonRest.put()
部分是同一个对象,不用担心。您的问题是,在第一个代码片段中,您将 .then()
方法调用的结果分配给 promise
,并且确实返回了不同的 promise (请参阅 the docs ) .
比较
var promise;
( promise = myJsonRest.put(data).then(function(){…}) );
至
var promise;
( promise = myJsonRest.put(data) ).then(function(){…});
关于javascript - Dojo JsonRest Promise -- 异步调用的顺序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17866075/
我想使用 Dojo JsonRest 从 REST 服务读取 JSON 数据。 REST 服务需要用户名和密码作为基本身份验证字符串。一开始,我对这个字符串进行了硬编码。现在,我尝试了以下方法:
我正在开发一个基于 dojo 框架的网络应用。 我决定使用 dojox.data.JsonRestStore用于与服务器通信。 例如,我在 Json 中有这样的订单(电子商务)表示: { id: in
我正在尝试将增强型网格与 Dojo JSONREST 结合使用,但遇到了一些问题。 我一直在查找一些示例,但无法弄清楚如何做我需要的。 在下面的代码中,我的 rest 服务采用两个参数,并且对服务的查
运行道场1.8.4 使用 JsonRest(不是 JsonRestStore),我向端点发出 put 请求,然后获取结果并从请求响应中收集位置信息,如下所示: var promise = myJson
在 dojo/store/JsonRest 存储上使用“add”或“put”时,我希望有一个用于服务器响应的事件处理程序,无论是错误还是成功。 我尝试在“add”调用中添加诸如 error: func
我的项目使用 JsonRest 存储来访问其数据。一切都很好。问题是,当服务器返回错误时,即使调用了正确的代码部分,并且功能正常工作,该对象也会向控制台记录一个丑陋的错误。 我的代码: functio
我使用带有 jsonrest 的 Gridx 作为存储和分页模块。过滤只能在客户端完成吗?目前它向 jsonrest 存储发送请求并查询服务器。 最佳答案 是的,可以做到,看这个: https://g
我可以使用FilteringSelect: var jsonStore = new JsonRest ({ target: "/ajax_script/autocomplete?term1=
我想使用 QUnit 针对 Dojo JsonRest Store 编写集成测试。该测试应验证 JsonRest 是否与我编写的 REST API 集成。 目前我有以下代码,从 QUnit 网站复制:
谁能告诉我应该使用哪个 restStore 实现?我认为 dojo.store.JsonRest 是正确的库,因为它是最新的实现,但一位同事说他在某个地方读过(我知道不是很有帮助)我们应该仍然使用 d
我已成功设置 FilteringSelect 以使用 JsonRest 存储动态查询服务器中的项目。我的问题是当我尝试最初设置具有特定值的下拉列表时。 dojo.ready(function
Dojo dojo/store/JsonRest API Reference 请查看Method and RESTful Mapping Section 那里写着我的服务器应该遵循 RFC 2616
根据这篇文章Remove String from JSON ,我想用 JSON 数据填充 Dojo 选择框。问题是我必须先更改 JSON 数据,然后才能将数据分发到 dijit.form.select
我想知道是否有任何方法可以在自动执行 JsonRest 存储的 Get ajax 请求 (xhr.get) 中设置我自己的自定义 http header 。 有一个相关的主题,但没有很好的解决方案:
我一直在关注这个 tutorial关于将商店连接到树,本教程中详细介绍的所有内容都可以正常工作。但我不知道如何从树中删除条目。使用 store.remove (itemid) 确实会触发对 DELET
有没有办法用 JSON 结构中的子对象填充 dojox/grid/EnhancedGrid 的列?例如,如果我有一个看起来像这样的 JSON 行: { id: 2,
我有一个 OnDemandGrid,其中有一列,我想用我构建的自定义 Dojo 小部件填充该列。用于填充每个小部件的数据来自 Solr 查询。由于我预计可能有数千个搜索结果,因此我需要使用 JsonR
我正在使用 Dojo JsonREST 存储与服务器上的 RESTful API 进行通信。 GET 和 QUERY 方法与异步回调处理程序配合得很好。然而,在 JsonREST 存储上发布新对象的
我在尝试连接到提供 Arcgis Javascript API docs 的示例休息服务时收到以下错误. No 'Access-Control-Allow-Origin' header is pres
在 dojo.store.JsonRest 中如何设置 header "Accept"值为 application/json 的 puting 或 posting? var dataStore = n
我是一名优秀的程序员,十分优秀!