javascript – 做一些ajax并使用getJSON返回一个promise
作者:互联网
我正在使用此代码从facebook api获取数据并使用Durandal显示,并且它工作正常.
return $.ajax({
url: 'http://graph.facebook.com/facebook?callback=?',
dataType: 'json',
}).promise();
我试图使用getJSON做同样的事情
$.getJSON( "http://graph.facebook.com/facebook?callback=?");
我尝试了以下代码;它不起作用.
var jqxhr = $.getJSON("http://graph.facebook.com/facebook?callback=?");
return jqxhr;
这从Facebook获取数据.
但问题在于回归承诺.由于我正在使用durandal,因此返回模块工作的承诺非常重要.
如何在使用getJSON时返回承诺?
这是我的durandal模块
define(function (require) {
return {
getCustomers: function () {
//do some ajax and return a promise
var jqxhr = $.getJSON("http://graph.facebook.com/facebook?callback=?");
return jqxhr;
}
};
});
这就是我所说的
define(function (require) {
var backend = require('backend');
var ko = require('knockout');
return {
customers: ko.observableArray([]),
activate: function () {
var that = this;
return backend.getCustomers().then(function (result) {
var arr = [];
arr.push(result)
that.customers(arr);
});
}
};
});
解决方法:
它已经有了promise接口:“$.getJSON()返回的这个jQuery XHR对象或”jqXHR“实现了Promise接口”
看这个例子:
var a=$.getJSON( "http://graph.facebook.com/facebook?callback=?");
a.done(function (){...}).fail(function (){...}).always(function (){...});;
PS
“This gets me the data from the facebook.”
没有.这将返回jqXHR对象.
标签:getjson,javascript,jquery,ajax,promise 来源: https://codeday.me/bug/20190725/1532562.html