如何在 angularjs 中将任务推送到后台
how to push a task to background in angularjs
我正在做一个需要向客户发送消息的项目。我想将这个 $http 调用推到后台,只在顶部收到一条小消息,说明消息已发送。就像在 google 邮箱中一样。现在我必须等待消息发送到那时我的模态冻结(我正在使用模态在表格中输入详细信息)。预先感谢您的帮助。
var data = {
"object":"value"
};
Data.post('url', data).then(function (result) {
if (result.status != 'error') {
$modalInstance.close();
alert('sent message')
} else {
console.log(result);
}
})
这是我需要发送到后台的进程。所以我想要的是,一旦我点击调用上述代码的发送报告按钮,模态就需要关闭。我希望上面的代码在后台 运行 并在顶部收到一条小警告消息,说明消息是否已发送
您可以通过将 Web Worker 与 AngularJS 结合使用来做到这一点,这是服务中的 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
网络工作者的工作示例
如果您想立即关闭模式,请在发出请求之前进行 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);
}
})
为此,您可以使用 angular 插件 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/
--瓦迪姆
我正在做一个需要向客户发送消息的项目。我想将这个 $http 调用推到后台,只在顶部收到一条小消息,说明消息已发送。就像在 google 邮箱中一样。现在我必须等待消息发送到那时我的模态冻结(我正在使用模态在表格中输入详细信息)。预先感谢您的帮助。
var data = {
"object":"value"
};
Data.post('url', data).then(function (result) {
if (result.status != 'error') {
$modalInstance.close();
alert('sent message')
} else {
console.log(result);
}
})
这是我需要发送到后台的进程。所以我想要的是,一旦我点击调用上述代码的发送报告按钮,模态就需要关闭。我希望上面的代码在后台 运行 并在顶部收到一条小警告消息,说明消息是否已发送
您可以通过将 Web Worker 与 AngularJS 结合使用来做到这一点,这是服务中的 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
网络工作者的工作示例如果您想立即关闭模式,请在发出请求之前进行 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);
}
})
为此,您可以使用 angular 插件 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/
--瓦迪姆