Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/436.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 为什么延迟后的delfered.promise.resolve(myobject)的结果与myobject不同_Javascript_Angularjs - Fatal编程技术网

Javascript 为什么延迟后的delfered.promise.resolve(myobject)的结果与myobject不同

Javascript 为什么延迟后的delfered.promise.resolve(myobject)的结果与myobject不同,javascript,angularjs,Javascript,Angularjs,我认为,这就是造成这一问题的原因。我已经看过了,但我仍然不明白发生了什么。当我登录到控制台时,temp的值会得到预期的结果1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,但使用var month=$q.defer()和month.resolve(temp)并尝试记录月份的值。承诺我得到[Object Object]而不是temp 这是我们应该期待的吗? 如果没有-我做错了什么(

我认为,这就是造成这一问题的原因。我已经看过了,但我仍然不明白发生了什么。当我登录到控制台时,
temp
的值会得到预期的结果
1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31
,但使用
var month=$q.defer()
month.resolve(temp)
并尝试记录
月份的值。承诺
我得到
[Object Object]
而不是temp

这是我们应该期待的吗?

如果没有-我做错了什么(如果是一个因素)

如果是-如何将
month.promise
转换为更易消费的表单?i、 e.如果temp是一个数组,我如何访问
month.promise
作为数组,其中
temp[0]=month.promise[0]

下面是我的代码示例,但可以找到我的所有控制器和服务,我基本上只想将数组(或JSON)返回到我的控制器,而不是
[Object Object]

var month = $q.defer();
$http.get('getMonth.php?date=' + date)
    .success(function (data, status, headers, config) {

    var temp = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31];
    console.log("Temp : " + temp + " !!!");
    month.resolve(temp);

    //month.resolve(data);
    //console.log("data "+data[0]);
    console.log("resolved " + month);
    console.log("resolved[0] " + month[0]);
    console.log("resolved.promise " + month.promise + " !!!");
    console.log("resolved.promise[0] " + month.promise[0]);

});
更新 根据下面@CuongLe的建议,我已经添加了下面的代码,我可以成功地记录我的数据,但当我返回数据时,仍然会得到
[Object Object]

var promise = month.promise;
promise.then(
    function (data) {
        console.log(data);
});
发件人:

延迟对象的目的是公开关联的Promise实例以及可用于发出任务成功或不成功完成信号的API

因此,您应该继续调用
,然后使用success方法调用
以获取
temp

var promise = month.promise;
promise.then(
    function(temp){
    console.log(temp);
});
您的服务:

angular.module('testApp', [])
    .factory('memberFactory', function ($http, $q) {

    var getMonth = function (date) {
        var month = $q.defer();

        $http.get('getMonth.php?date=' + date)
            .success(function (data, status, headers, config) {

            var temp = [1, 2, 3, 4, 5, 6, 7,...];
            month.resolve(temp);
        });           
        return month.promise;
    }

    return {
        getMonth: getMonth
    };  
});
控制员:

function myController($scope, memberFactory) {

    promise = memberFactory.getMonth("2013-08-01 06:30:00");

     promise.then(
        function (monthDays) {
           console.log("monthDays : " + monthDays + " !!!");

            var dates = [];
            for (var i = 0; i < monthDays.length; i++) {
                if (i % 7 == 0) dates.push([]);
                dates[dates.length - 1].push(monthDays[i]);
            }

            $scope.dates = dates;
        });

}
函数myController($scope,memberFactory){
promise=memberFactory.getMonth(“2013-08-01 06:30:00”);
我保证,那么(
功能(月日){
log(“monthDays:+monthDays+”!!!);
var日期=[];
对于(变量i=0;i
使用然后返回承诺的方法:

obj.getMonth = function (date) {
    var month = $q.defer();
    $http.get('getMonth.php?date=' + date)
        .then(function (data, status, headers, config) { 
            var temp = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 
                16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31]; 
            month.resolve(temp); 
        });
    return month.promise;         
}

这应该被标记为
javascript
,而不是
java
。对不起,这是javascript,按enter也可以earlier@CurongLe很抱歉,我不明白,我尝试了这个,我刚刚得到
TypeError:Object#没有方法'then'
@CurongLe可以在控制台上打印出来,但我如何返回它,因为我仍然只得到
[Object-Object]
当我这样做的时候?我已经添加了完整的控制器和服务代码helps@CurongLe你是一个传奇谢谢你,现在让我可以使用
response=memberFactory.getMonth(date)打印整个数组更有意义了$scope.month=response
但我仍然无法访问像这样的单个项目
$scope.day=response[0]