【发布时间】:2018-12-20 02:47:18
【问题描述】:
我正在尝试包装第三方库以返回一个对象,该对象解析为可以在视图中显示的对象,类似于 $resource() 的工作方式。我知道我可以在 promise 上手动执行 .then() 然后设置值,但我希望结果能够无缝返回,类似于我可以执行的操作:
this.Value = $resource("/someresource").get();
如何更改以下 SomeThirdPartyFunction() 以返回在视图中解析的对象。
这是我正在尝试做的一个示例:
angular.module('testApp', []).controller('TestController', function ($timeout, $q) {
var TestController = this;
var SomeThirdPartyFunction = function () {
var Deferred = $q.defer();
var Promise = Deferred.promise;
$timeout(function () {
Deferred.resolve("abcd");
}, 3000);
return Promise;
};
TestController.Value = SomeThirdPartyFunction();
/* I don't want to do this:
SomeThirdPartyFunction().then(function(Value) {
TestController.Value = Value;
});*/
});
这是一个笨蛋:https://plnkr.co/edit/HypQMkaqXmFZkvYZXFXf?p=preview
我看到的每个使用 Promise 的示例都只是包装了 $http 调用,但我还没有看到任何调用第三方库的示例,这些库返回解析为对象的 Promise。
【问题讨论】:
-
$resource 服务仅在数据为对象或数组时有效。它不适用于示例中的字符串等原语。
-
是的,我只是以字符串为例。我的具体用途是对象。
标签: angularjs angular-promise ngresource