Показать сообщение отдельно
  #4 (permalink)  
Старый 08.02.2010, 02:27
Аватар для Gvozd
Матрос
Отправить личное сообщение для Gvozd Посмотреть профиль Найти все сообщения от Gvozd
 
Регистрация: 04.04.2008
Сообщений: 6,246

Сообщение от tenshi
потоки не параллельны!
заметка: и даже не ассинхронны
почерпнул для себя кое-что новое
вот только, исключение нигде не выползает в консоль(Opera, Mozilla)

Разве что, не вижу смысла зачем городить потоки для данной задачи.
Сделал вот такое решение. Кто-то видит подводные камни какие?
var GThread= new function(){
//Version: 3
//Descr: 'creates a wrapper for function that allows you to not be afraid of exceptions in'
//License: 'public domain'

//Implementation:
var GThread=function(proc){
	var thread=function()
		{
		try
			{
			return proc.apply(this,arguments);
			}
		catch(e)
			{
			console.warn(e); 
			console.trace();
			return undefined;
			}
		}
	return thread;
}

//Export: return GThread

//Usage:
var inverse=GThread(function(a){
	if(a===0) 
		throw 'division by zero';
	return 1/a;
})
var inverse2=GThread(function(a){
	return -a;
})
console.log([inverse(0),inverse2(2),inverse(2)])
// prints [undefined, -2, 0.5] without( :( ) exception 'division by zero' in console log 

}

Последний раз редактировалось Gvozd, 08.02.2010 в 03:53.
Ответить с цитированием