Javascript 使用getJSON执行一些ajax并返回一个承诺
我使用这段代码从facebook api获取数据,并使用Durandal显示,它工作正常Javascript 使用getJSON执行一些ajax并返回一个承诺,javascript,jquery,ajax,getjson,promise,Javascript,Jquery,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=?");
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);
});
}
};
});
这应该行得通
$.getJSON( "http://graph.facebook.com/facebook?callback=?").promise();
它已经有了promise接口:“$.getJSON()返回的这个jQuery XHR对象或“jqXHR”实现了promise接口” 请看下面的示例:
var a=$.getJSON( "http://graph.facebook.com/facebook?callback=?");
a.done(function (){...}).fail(function (){...}).always(function (){...});;
ps
“这让我从facebook获得了数据。”
否。这将返回jqXHR对象。这已经完成了。谢谢你们
return $.getJSON( "http://graph.facebook.com/facebook?callback=?").done();
它已经有了promise接口:“$.getJSON()返回的这个jQuery XHR对象,或“jqXHR”,实现了promise接口”@RoyiNamir,那么如何实现这个‘返回承诺’的东西呢?是的。所有功能都已出现在原始的
jqXHR
上。调用.promise()
只需使用promise接口函数就可以得到promise,剩下的是另一个jqXHR
函数。@PaulDraper:是的,我只想返回promise部分。我想如果你使用一大堆函数,它会有一些(次要的)内存优势。