Angularjs 如何创造承诺?

Angularjs 如何创造承诺?,angularjs,Angularjs,问题是$window.print()总是被调用,而不仅仅是在promise成功时调用。在填充数据时,如何创建promise?有什么建议吗 'use strict'; angular.module("printModule").controller('printController', ['$scope', '$window', '$q', function ($scope, $window, $q) { $scope.ticketPin = localStorage.getItem(

问题是$window.print()总是被调用,而不仅仅是在promise成功时调用。在填充数据时,如何创建promise?有什么建议吗

'use strict';
angular.module("printModule").controller('printController', ['$scope', '$window', '$q', function ($scope, $window, $q) {


    $scope.ticketPin = localStorage.getItem("pin");
    $scope.payoutTime = localStorage.getItem("payoutTime");
    $scope.payoutAmount = localStorage.getItem("payoutAmount");

    var defer = $q.defer();
    defer.resolve($scope.ticketPin);
    defer.resolve($scope.payoutTime);
    defer.resolve($scope.payoutAmount);

    defer.promise.then(function () {
        $window.print();
    })
}]);

注意,上面的内容应该可以使用,但我没有使用足够的本地存储来了解ins、OUT和GOTCHA,因此可能需要对嵌套返回进行一些重新排列

代码立即解析(或“完成”)承诺(因此它将立即成功地调用以下“then”)。这可能不是我们想要的…@user2864740那么我该如何解决这个问题呢?:)因为
LocalStorage.getItem
是同步的,所以真的没有什么需要完成的/没有承诺要等待的。您是否考虑过使用getFromLocalStorage函数并从函数内部通过回调返回数据?@tuckerjt07这是什么意思?你能举个例子吗?如果上面的方法不起作用,我讨厌这样做,但有时在平均返回时间的高端设置$timeout是有效的。不过,这种方法有两个明显的问题。如果应用程序的性能比正常情况好,它会人为地减慢应用程序的速度,如果性能比正常情况慢,它有时会不够长。@tuckerjt07如何将其“注入”到我的项目中?:)var回调,下面的所有内容都进入控制器,上面的内容将进入工厂,您可以将所有内容都放在控制器中,但我认为这不是一个好的做法。
function getFromLocalStorage (item, callback)  {
    //To prevent errors
    if (callback) {
        return callback(localStorage.getItem(item)) ;
    }
} 

var callback;
callback = function (data) {
    //Set variable to data
} 

//I would make getFromLocalStorage a factory
myFactory.getFromLocalStorage("itemName", callback);