Сообщение от destus
|
okuznetsov1,
Твой вебворкер запускается в другом потоке. То есть контекст воркера и ангуляр приложения полностью изолированы поэтому у тебя нет доступа к сервису $http.
Вот готовое решение https://github.com/FredrikSandell/angular-workers
|
Реализовал по вашему решению, вроде бы получилось. Можете подсказать правильно ли сделал? Предполагаю, что есть ошибки, хотя код работает хорошо и без сбоев. Также как проверить что код работает в фоне? (я зацикливал на 1000 записей, а в это время щёлкал по странице и элементам, страница не подвешивалась и можно сказать не подтормаживала. может быть есть какие-то средства специальные для этого?)
var app = angular
.module('contactList', ['lumx', 'ngSanitize', 'ngCsv', 'FredrikSandell.worker-pool'])
.run(function (WorkerService) {
//WorkerService.setAngularUrl('../bower_components/angular/angular.js');
WorkerService.setAngularUrl('https://ajax.googleapis.com/ajax/libs/angularjs/1.3.15/angular.min.js');
//WorkerService.addDependency(serviceName, moduleName, url);
});
app.controller('ReadFileController', ['$scope', '$http', 'WorkerService', function ($scope, $http, WorkerService) {
$scope.foo = function (content) {
var workerPromise = WorkerService.createAngularWorker(['input', 'output', '$http', function (input, output, $http) {
//var i=0;
//var callback = function(i) {
// output.notify();
// i++;
//};
//for (var i = 0; i < 1000; i++) { callback(i); }
output.notify();
}]);
workerPromise
.then(function success(angularWorker) {
//The input must be serializable
return angularWorker.run();
},
function error(reason) {
console.log('callback error');
console.log(reason);
//for some reason the worker failed to initialize
//not all browsers support the HTML5 tech that is required, see below.
}).then(function success(result) {
console.log('success');
console.log(result);
//handle result
}, function error(reason) {
//handle error
console.log('error');
console.log(reason);
}, function notify() {
//handle update
$http.post('/anguler-tasks-contacts/addContactData.php',{last_name:1, name:2, patronymic_name:3, address:4, telephone:5, url:6, description:7, completed:'false'})
.then(function(response) {
$scope.contactslist.push({
id: response.data[0].id,
last_name: response.data[0].last_name,
name: response.data[0].name,
patronymic_name: response.data[0].patronymic_name,
address: response.data[0].address,
telephone: response.data[0].telephone,
url: response.data[0].url,
description: response.data[0].description,
completed: response.data[0].completed
});
}
}
);
}
}]);