我正在开展一个项目,我需要向客户发送消息。我想将此$ http呼叫推送到后台,并且只在顶部收到一条消息已发送的小消息。就像谷歌邮箱一样。现在我必须等待消息发送到那时我的模态冻结(我使用模态输入表格中的详细信息)。提前感谢您的帮助。
var data = {
"object":"value"
};
Data.post('url', data).then(function (result) {
if (result.status != 'error') {
$modalInstance.close();
alert('sent message')
} else {
console.log(result);
}
})
这是我需要发送到后台的过程。所以我想要的是,一旦我点击发送报告按钮调用上面的代码,模态需要关闭。我希望上面的代码在后台运行,只是在顶部收到一条小警告消息,说明消息是否已发送
答案 0 :(得分:0)
你可以通过使用AngularJS的Web Workers来做到这一点,这是一个服务中的webworker的例子
var app = angular.module("myApp",[]);
app.factory("HelloWorldService",['$q',function($q){
var worker = new Worker('doWork.js');
var defer = $q.defer();
worker.addEventListener('message', function(e) {
console.log('Worker said: ', e.data);
defer.resolve(e.data);
}, false);
return {
doWork : function(myData){
defer = $q.defer();
worker.postMessage(myData); // Send data to our worker.
return defer.promise;
}
};
});
here also Angular中Web工作者的工作示例
答案 1 :(得分:0)
如果您想立即关闭模式,请在发出请求前进行close()
来电。
var data = {
"object":"value"
};
$modalInstance.close();
Data.post('url', data).then(function (result) {
if (result.status != 'error') {
alert('sent message')
} else {
console.log(result);
}
})
答案 2 :(得分:0)
为此,您可以使用角度插件https://github.com/vkiryukhin/ng-vkthread
允许您在单独的线程中执行函数。
基本用法:
/* function to execute in a thread */
function foo(n, m){
return n + m;
}
/* create an object, which you pass to vkThread as an argument*/
var param = {
fn: foo // <-- function to execute
args: [1, 2] // <-- arguments for this function
};
/* run thread */
vkThread.exec(param).then(
function (data) {
console.log(data); // <-- thread returns 3
}
);
有关示例和文档,请参阅http://www.eslinstructor.net/ng-vkthread/demo/
- 瓦迪姆