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]