2015-09-13 3 views
2

Я написал a script для развертывания веб-проекта. Этот кулак загружает кучу файлов по FTP, а затем отправляет запрос на сообщение chat bot на сообщение https://chat.stackexchange.com/.Могу ли я использовать разные реализации обещаний?

Я новичок в JavaScript и Node.js, и не знал о обещаниях, когда я впервые написал код. Я сейчас перерабатываю его из использования вложенных обратных вызовов в обещания с помощью сборки Node Promise.

Для того, чтобы сделать запрос HTTP к боту, я использовал request. Есть еще одна библиотека под названием request-promise с использованием обещаний Bluebird. Являются ли они совместимыми со встроенной реализацией обещаний? Есть ли какие-то проблемы, которые мне нужно искать?

Существует список сайтов Conformant Promise/A+ Implementations, но ни Node.js, ни Chromium не указаны там. Означает ли это, что я не могу использовать их вместе?

+1

Да, новые оригинальные обещания ES6 также совместимы с Promises/A +. [Возможно, нам стоит] (https://github.com/promises-aplus/promises-spec/issues/211) перечислить их там. – Bergi

ответ

2

Вы должны доверять утверждают, что Request-promise is a drop-in replacement for Request

bluebird является надстройкой тока, построенный в Promise реализации в узле. То есть вы можете использовать их взаимозаменяемо, за исключением того, что bluebird имеет больше функций/методов. Вместо того, чтобы пытаться их смешивать, я бы просто использовал bluebird всюду.

Если вы действительно этого не хотите, это не должно иметь никакого отношения к объединению обещаний. Следующие, по-прежнему, журналы hello.

let bluebird = require("bluebird"); 

new bluebird(resolver => resolver()) 
.then(() => new Promise(resolver => resolver())) 
.then(() => console.log("hello")); 

Использование Promise = require("bluebird") также довольно распространено.

1

Они совместимы. Вероятно, некоторые реализации немного отличаются друг от друга, но основной поток Promise одинаковый. Кажется, что Bluebird быстрее, чем реализация Node.JS.

Смежные вопросы