从其中一个服务中,我retuning
是后端输出。我正在获取值,但是如何从返回的对象中获取结果值?
这是我的代码:
var queryConractorInfo = function ( server, contractorParams ) {
return server.contractorInfo.get(contractorParams)
.$promise.then(function ( contractorInfo ) {
return contractorInfo;
})
}
这是我的电话:
console.log( queryConractorInfo( server, contractorParams) );
这是我得到的输出:
{
"$$state": {
"status": 1,
"value": { // i want to get this from returned object.
"ActualPercentage": "33.5",
"AllWeeks": [
"/Date(1446930000000+0300)/",
"/Date(1446498000000+0300)/",
"/Date(1439154000000+0300)/",
"/Date(1438635600000+0300)/",
"/Date(1436043600000+0300)/",
"/Date(1431550800000+0300)/",
"/Date(1389733200000+0300)/",
"/Date(1332277200000+0300)/"
]
}
}
}
我试过这样:
var queryConractorInfo = function ( server, contractorParams ) {
return server.contractorInfo.get(contractorParams)
.$promise.then(function ( contractorInfo ) {
return contractorInfo.promise;
//adding promise but not working
})
}
答案 0 :(得分:1)
据我了解你的情况,你似乎一直坚持要回来。
这不是承诺的方式。从promise回调(或解析函数)返回只会将数据传递给下一个.then()函数。你可以链接许多然后调用
var queryContractorInfo = function ( server, contractorParams ) {
return server.contractorInfo.get(contractorParams)
.$promise.then(function ( contractorInfo ) {
// This will return to the next .then() call
return contractorInfo;
})
.then(function(contractorInfo) {
// Another then call, understand?
});
}
它基本上就像这样工作
// Outer variable, initialized to null (use an empty object if you prefer)
var queryContractorInfo = null;
server.contractorInfo.get(contractorParams)
.$promise.then(function ( contractorInfo ) {
// Now I can set queryContractorInfo
queryContractorInfo = contractorInfo;
// You can return, but you don't need to, if this is the final then
});
只要查询正在进行,queryContractorInfo就为空。得到结果后,变量将设置为结果数据。在then函数中,如果你想使用这个变量,你现在可以触发更多的函数。
答案 1 :(得分:0)
你想要实现的目标有点不清楚,但这应该对你有所帮助。 我想你想从你得到它的函数返回JSON对象吗?
假设您将该函数称为
myFuncToGetJSON().then(function(result){
//result is the JSON object you are expecting
});
在你获得JSON的函数中
function myFuncToGetJSON(){
var deferred = $.Deferred(); // create a deferred object
//do steps to generate JSON
deferred.resolve(theJSONYouHaveGenerated);
return deferred.promise();
}
更多帮助 HERE