2016-09-11 3 views
2

Я использую aws sdk для javascript для загрузки объекта в ведро S3, но также используя реактивное программирование rxjs для создания потоков. Итак, каков наилучший способ загрузки S3 в виде потока, а затем запустить вызов API как поток?Использование реактивного программирования RXJS с AWS SDK для javascript

var stream = Rx.Observable.fromPromise(s3.putObject(params).promise()); 
stream.subscribe(data=>{},err=>{}) 

В приведенном выше примере, это работает, но проблема заключается в «данные» является пустым объектом даже после того, как файл был успешно загружен в ведро S3, так что я не могу сделать поток API, потому что мне нужно некоторое информация о файле.

Или использовать Rx.Observable.fromNodeCallback (s3.upload)? Пожалуйста, советую, большое спасибо.

+0

Что вы ожидаете, чтобы вернуться в объект данных? –

+0

@MarkB не должен ли он возвращать информацию о файле точно так же, как в объекте данных при использовании функции (err, data)? Одна из них - функция обратного вызова, а другая - обещание, но как результат обещание ничего не возвращает. Я что-то упустил или это ошибка в AWS SDK? Спасибо. –

+0

Можете ли вы показать пример информации о файле, которая возвращается, когда вы не используете обещания? –

ответ

1

Вы можете создать наблюдаемый поток из обратного вызова, не создавая промежуточных обещаний. Если вы хотите, чтобы получить информацию о файле, как результат, попробуйте использовать upload method АМС SDK:

const upload = s3.upload(config); 
const uplaod$ = Rx.Observable.fromNodeCallback(upload.send, upload)(); 
upload$.subscribe(v => console.log(v)); // will print file details 
+0

Это именно то, что я ищу, большое спасибо. Я попробовал fromNodeCallback раньше, но не получил его работу, потому что отсутствует .send –

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