Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #21 (permalink)  
Старый 08.05.2014, 16:14
Отправить личное сообщение для Octane Посмотреть профиль Найти все сообщения от Octane  
Регистрация: 10.07.2008
Сообщений: 3,873

Promise уже не ES5, логично предполагать наличие es6-shim, но не составит труда убрать ES6-Object.assign и мозиловские Array generics. Ок, сделаю отдельно, будет только @requires setImmediate.

У меня опыт Nodejs только в составе node-webkit, поэтому особо не суюсь в серверные скрипты.
Ответить с цитированием
  #22 (permalink)  
Старый 08.05.2014, 20:45
Отправить личное сообщение для Octane Посмотреть профиль Найти все сообщения от Octane  
Регистрация: 10.07.2008
Сообщений: 3,873

Хы пока выносил в отдельный репозиторий, нашел различие в поведении нативной реализации в Chrome и Firefox:

var p1 = Promise.resolve(),
    p2 = Promise.resolve();

p1.then(p2).then(function () {
    console.log('Firefox!'); //сработает только в Firefox
});


и что-то не найду, как должно быть, везде описан случай:
var p1 = Promise.resolve(),
    p2 = Promise.resolve();

p1.then(function () {
    return p2;
}).then(function () {
    console.log('Works well!'); //тут оба браузера сработают, но не полифил
});
щас буду исправлять

---------------

Отдельный репозиторий Promise не требующий Object.assign и Array generics.
В ноде подключается так:
var Promise = require('es6-promises').Promise;

Последний раз редактировалось Octane, 09.05.2014 в 21:01.
Ответить с цитированием
  #23 (permalink)  
Старый 08.05.2014, 21:51
Особый гость
Посмотреть профиль Найти все сообщения от monolithed
 
Регистрация: 02.04.2010
Сообщений: 4,260

Octane,
Крутяк
Ответить с цитированием
  #24 (permalink)  
Старый 08.05.2014, 22:14
Аватар для nerv_
junior
Отправить личное сообщение для nerv_ Посмотреть профиль Найти все сообщения от nerv_
 
Регистрация: 29.11.2011
Сообщений: 3,924

Сообщение от Octane
Отдельный репозиторий Promise не требующий Object.assign и Array generics.
В ноде подключается так:
var Promise = require('promise').Promise;
спасибо, добрый человек
__________________
Чебурашка стал символом олимпийских игр. А чего достиг ты?
Тишина - самый громкий звук
Ответить с цитированием
  #25 (permalink)  
Старый 08.05.2014, 22:15
Отправить личное сообщение для Octane Посмотреть профиль Найти все сообщения от Octane  
Регистрация: 10.07.2008
Сообщений: 3,873

Спасибо)

--------------------------------------
var p1 = new Promise(function (resolve) {
        resolve();
    }),
    p2 = new Promise(function (resolve) {
        resolve();
    });

p1.then(p2).then(function () {
    console.log('Works'); //Aurora 31
}, function () {
    console.log('Error'); //Chrome 36
});
и какому варианту следовать?
Ответить с цитированием
  #26 (permalink)  
Старый 08.05.2014, 22:18
Аватар для nerv_
junior
Отправить личное сообщение для nerv_ Посмотреть профиль Найти все сообщения от nerv_
 
Регистрация: 29.11.2011
Сообщений: 3,924

Сообщение от Octane
и какому варианту следовать?
любит, не любит
__________________
Чебурашка стал символом олимпийских игр. А чего достиг ты?
Тишина - самый громкий звук
Ответить с цитированием
  #27 (permalink)  
Старый 09.05.2014, 16:01
Особый гость
Посмотреть профиль Найти все сообщения от monolithed
 
Регистрация: 02.04.2010
Сообщений: 4,260

Octane,
а ты этот проект видел https://github.com/slightlyoff/Promises ?
Ответить с цитированием
  #28 (permalink)  
Старый 09.05.2014, 17:38
Отправить личное сообщение для Octane Посмотреть профиль Найти все сообщения от Octane  
Регистрация: 10.07.2008
Сообщений: 3,873

Я много пересмотрел, в этом какие-то нестандартные Promise.any, Promise.every, Promise.some, Promise.fulfill. Наверное еще по ранним черновикам делал, или сами названия выдумывал. Странно конечно, это же участник ТС39.

Последний раз редактировалось Octane, 09.05.2014 в 17:50.
Ответить с цитированием
  #29 (permalink)  
Старый 09.05.2014, 17:49
Особый гость
Посмотреть профиль Найти все сообщения от monolithed
 
Регистрация: 02.04.2010
Сообщений: 4,260

Сообщение от Octane
Я много пересмотрел, в этом какие-то нестандартные Promise.any, Promise.every, Promise.some, Promise.fulfill. Наверное еще по ранним черновикам делали, или сами названия выдумывали.
Ты обратил внимание на то, что они завязываются на process.nextTick || MutationObserver?


Может для this._* сделать неперечисляемыми?
package.json сделаешь?

Последний раз редактировалось monolithed, 09.05.2014 в 17:55.
Ответить с цитированием
  #30 (permalink)  
Старый 09.05.2014, 18:10
Отправить личное сообщение для Octane Посмотреть профиль Найти все сообщения от Octane  
Регистрация: 10.07.2008
Сообщений: 3,873

process.nextTick это для старых версий Nodejs, сейчас там встроен global.setImmediate. MutationObserver я хз для чего там, поиск не нашел postMessage, наверное события обсервера используют чтобы асинхронно вызывать функции, ну или хз надо будет внимательнее посмотреть.

установку через npm и bower сделаю, как баг исправлю.

Сообщение от monolithed
Может для this._* сделать неперечисляемыми?
это же придется подменять defineProperty для IE8…

Последний раз редактировалось Octane, 09.05.2014 в 18:13.
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Баг Aurora promise catch Octane Оффтопик 2 28.03.2014 01:37
последовательность вызовов без promise virus-07 Общие вопросы Javascript 0 17.10.2013 10:27
работа с promise vy4eslavik AJAX и COMET 1 28.02.2013 21:55