Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/70.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/opencv/3.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
Angularjs 收听$q的notify比收听$broadcast好吗?_Angularjs_Angular Promise - Fatal编程技术网

Angularjs 收听$q的notify比收听$broadcast好吗?

Angularjs 收听$q的notify比收听$broadcast好吗?,angularjs,angular-promise,Angularjs,Angular Promise,angular社区不鼓励使用$broadcast,因此我正在尝试寻找其他方法。需要对这种做法的有效性提出建议 var deffered = $q.defer(); var getPromise = function () { return deffered.promise; }; var notify = function () { deffered.notify('Hello'); }; var listenToNotification = function () {

angular社区不鼓励使用$broadcast,因此我正在尝试寻找其他方法。需要对这种做法的有效性提出建议

var deffered = $q.defer();

var getPromise = function () {
    return deffered.promise;
};

var notify = function () {
    deffered.notify('Hello');
};

var listenToNotification = function () {
    getPromise().then({}, {}, function (data) {
        console.log(data);
    });
};
结束


Angular主要用于ajax上的CRUDs,它的一个重要特性是promises。但承诺并不意味着像广播一样引发事件。 这里是主要的区别

广播是您可以在代码中注册特定事件的东西。 承诺是等待完成并通知你的东西。
因此,基于您想要做的事情,广播是事件驱动的,承诺应该与ajax调用一起使用

,我不确定您是从哪里得到“angular社区不鼓励使用
$Broadcast
”的印象的。使用
$broadcast
没有任何问题,问题是人们在不需要它的地方使用它。不幸的是,这也使得你的问题很难给出答案,因为你没有提供任何关于试图通知任何事情的实际目的的上下文。我正在处理的代码是高度模块化的。如果用户对其他模块执行了任何操作,则特别需要通知一个模块。就像用户打开任何弹出窗口一样,我需要在后台暂停视频。对,这似乎是
$broadcast
的合理使用。不过,我不确定创建用于该场景的承诺是否有任何意义。。。。
var notify = function () {
    $scope.$broadcast('someEvent', 'Hello');
};

var listenToNotification = function () {
    $scope.$on('someEvent', function (event, data) { 
        console.log(data); 
    });
};