Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/390.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 使用getJSON执行一些ajax并返回一个承诺_Javascript_Jquery_Ajax_Getjson_Promise - Fatal编程技术网

Javascript 使用getJSON执行一些ajax并返回一个承诺

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=?");

我使用这段代码从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);
            });
        }
    };
});
这应该行得通

$.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部分。我想如果你使用一大堆函数,它会有一些(次要的)内存优势。