【问题标题】:Rxjs alternative for promise approach承诺方法的 Rxjs 替代方案
【发布时间】:2016-09-25 02:35:20
【问题描述】:

我正在尝试为文件上传功能创建包装模块。 下面的代码看起来很适合我的场景,最近我遇到了 rxjs,想知道如何将下面的方法转换为 Observable。与承诺相比有什么优势。

http://mono.software/2014/07/07/Creating-NodeJS-modules-with-both-promise-and-callback-API-support-using-Q/

```

// dual-module.js
var Q = require('q');

module.exports = {
  getFullName: function (firstName, lastName, callback) {
    var deferred = Q.defer();

    if (firstName && lastName) {
        var fullName = firstName + " " + lastName;
        deferred.resolve(fullName);
    }
    else {
        deferred.reject("First and last name must be passed.");
    }

    deferred.promise.nodeify(callback);
    return deferred.promise;
 }
}

```

var DualModule = require('dual-module');

DualModule.getFullName("John", "Doe")
.then(function (result) {
    // result returns "John Doe"
})
.fail(function (error) {
    // error returns error message if either first or last name are null or undefined
});


var DualModule = require('dual-module');

DualModule.getFullName("John", "Doe", function (error, result) {
    // error returns error message if either first or last name are null or undefined   
    // result returns "John Doe"
});

【问题讨论】:

    标签: node.js promise rxjs rxjs5


    【解决方案1】:

    使用原生 Promise 和来自 Promise 的 RxJS

    let promise = new Promise((resolve, reject) => {
      if xxx resolve(yyy)
      else reject(zzz)
    })
    
    let stream$ = Rx.Observable.fromPromise(promise)
      .map(res => ...)
      .catch(err => ...)
    

    【讨论】:

      猜你喜欢
      • 2018-03-06
      • 2018-01-21
      • 2014-12-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-12-26
      • 2013-12-22
      相关资源
      最近更新 更多