作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个名为 addLocation 的 javascript/jQuery 函数,它是对象文字的一个方法:
addLocation: function(latLng, address=false, elevation=false, pan=false)
{
$.when(geographic.getAddress(latLng), geographic.getElevation(latLng), geographic.getMagneticDeclination(latLng))
.done(function(data){
if (data.status != 'OK') {
window.alert(data.message);
}
if (pan) {
flyityourself.map.panTo(latLng);
flyityourself.map.setZoom(16);
}
flyityourself.addWaypoint(latLng, data);
flyityourself.addMarker(latLng, data);
})
.fail(function(msg) {
window.alert(msg);
}
);
},
三个函数 getAddress、getElevation 和 getMagneticDeclination 都是名为“geographic”的第二个对象文字的方法。
但是代码失败了。
在调试器中,我检查了所有四个函数。
以前,只有 getAddress、getElevation 和 getMagneticDeclination 三个方法位于对象字面量“geographic”中。 addLocation 位于平面 .js 文件中。在本例中,代码有效。
但是自从更改我的代码以将 addLocation 放入对象文字以来,代码开始失败。
$.when 在对象文字中的工作方式是否不同,或者我是否忘记限定某些内容?
问候。克里斯·B.
最佳答案
A. Wolff 在他们的评论中是正确的 - 你在完成的回调中需要 3 个参数,每个参数对应于 when 处理的每个 promise 。
这是一个简单的示例,提供一个模拟地理对象以使您的代码在独立的 fiddle 中工作:
https://jsfiddle.net/tmLrn4gc/1/
// Mock geographic object for testing
geographic = {
// Return a promise, and a second later, resolve that promise with some
// dummy data.
getAddress: function() {
var dfd = $.Deferred();
window.setTimeout(function() {
dfd.resolve("address:lat1,lng1")
}, 1000);
return dfd.promise();
},
getElevation: function() {
var dfd = $.Deferred();
window.setTimeout(function() {
dfd.resolve("elevation:meters")
}, 1000);
return dfd.promise();
},
getMagneticDeclination: function() {
var dfd = $.Deferred();
window.setTimeout(function() {
dfd.resolve("declination:degrees")
}, 1000);
return dfd.promise();
}
};
// A simplified location manager, showing the 3 promises and a done method.
// The console output in the fiddle shows the 3 promises are resolved as
// desired.
LocationManager = {
addLocation: function(latLng, address=false, elevation=false, pan=false) {
$.when(
geographic.getAddress(latLng),
geographic.getElevation(latLng),
geographic.getMagneticDeclination(latLng)
).done(function(d1, d2, d3) {
console.log("Done", d1, d2, d3);
})
}
}
// Make it all happen!
LocationManager.addLocation();
关于javascript - 在对象字面量中使用 jquery.when,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47669532/
1.字面常量 (1)字面意思是啥就是啥,看其表示就可以知道其值和类型。 (2)有值无名,一用来初始化变量,与一种字符相关联。 #include <stdio.h>int main()
我是一名优秀的程序员,十分优秀!