Javascript jQuery右括号错误

Javascript jQuery右括号错误,javascript,jquery,ajax,Javascript,Jquery,Ajax,我希望输出的顺序如下: console.log("1st 1:", y1, y2, y3, y4); console.log("1st 2:", y1, y2, y3, y4); console.log("2nd 1:", y1, y2, y3, y4); console.log("2nd 2:", y1, y2, y3, y4); console.log("3rd:", y1, y2, y3, y4); 但是我得到了uncaughttypeerror:undefined不是done语句中的函

我希望输出的顺序如下:

console.log("1st 1:", y1, y2, y3, y4);
console.log("1st 2:", y1, y2, y3, y4);
console.log("2nd 1:", y1, y2, y3, y4);
console.log("2nd 2:", y1, y2, y3, y4);
console.log("3rd:", y1, y2, y3, y4);
但是我得到了
uncaughttypeerror:undefined不是
done
语句中的函数

只能看到:

1st 1: 5 5 5 5
1st 2: 8 30 236 365
我找不到此代码有任何错误:

    data: (
        function() {

            // Test
            y1 = 5,
            y2 = 5,
            y3 = 5,
            y4 = 5;

            // Ajax is asynchronous
            function doRun() {
                $.ajax({
                    type: "GET",
                    url: "/getTest",
                    success: function(data) {
                        console.log("1st 1:", y1, y2, y3, y4);
                        y1 = data.V1;
                        y2 = data.V2;
                        y3 = data.V3;
                        y4 = data.V4;
                        console.log("1st 2:", y1, y2, y3, y4);
                    }
                });
                return doRun;
            };

            doRun().done(function() {
                console.log("2nd 1", y1, y2, y3, y4);
            }).fail(function() {
                console.log("2nd 2");
            });

            var data = [],
                time = (new Date()).getTime(),
                i;
            for (i = -10; i <= 0; i++) {
                console.log("3rd:", y1, y2, y3, y4);
                data.push({
                    x: time + i * 10,
                    y: 0
                });
            }
            return data;
        }()
    )
数据:(
函数(){
//试验
y1=5,
y2=5,
y3=5,
y4=5;
//Ajax是异步的
函数doRun(){
$.ajax({
键入:“获取”,
url:“/getTest”,
成功:功能(数据){
控制台日志(“第一个1:”,y1,y2,y3,y4);
y1=数据0.V1;
y2=data.V2;
y3=data.V3;
y4=数据0.V4;
控制台日志(“第1个2:”,y1,y2,y3,y4);
}
});
返回多伦;
};
doRun().done(函数()){
控制台日志(“第二个1”,y1,y2,y3,y4);
}).fail(函数(){
控制台日志(“第二个2”);
});
var数据=[],
时间=(新日期()).getTime(),
我
对于(i=-10;i)

您返回了错误的内容。您返回了与调用的函数相同的
doRun
doRun
没有
done
属性。您的意思是从
$返回承诺。ajax

您对doRun()的调用返回的是doRun函数对象。这实际上有一个done()吗方法?我猜不是。

注意问题的标题与实际问题无关。可能要编辑该部分!
function doRun() {
                return $.ajax({
                    type: "GET",
                    url: "/getTest",
                    success: function(data) {
                        console.log("1st 1:", y1, y2, y3, y4);
                        y1 = data.V1;
                        y2 = data.V2;
                        y3 = data.V3;
                        y4 = data.V4;
                        console.log("1st 2:", y1, y2, y3, y4);
                    }
                });
            };