Невозможно разрешить вызов POST на наблюдаемом избыточном количестве - PullRequest
1 голос
/ 11 апреля 2020

Я работаю над собственным приложением реагирования и, имея POST-вызов с Observable.fromPromise, получаю ответ ниже, но я не уверен, как захватить ответ с точки зрения кода, и я также получаю некоторые предупреждения

Ответ:

PromiseObservable {_isScalar: false, promise: Promise, scheduler: undefined}
promise: Promise
_40: 0
_55: Promise
_40: 0
_55: Promise
_40: 0
_51: 3
_55: Response
bodyUsed: true
headers: Headers {map: {…}}
ok: true
status: 200
statusText: undefined
type: "default"
url: "http://localhost:9999/testPath/pathData"
_bodyBlob: Blob {_data: {…}}
_bodyInit: Blob {_data: {…}}
__proto__: Object
_65: 2
_72: null
__proto__: Object
_65: 3
_72: null
__proto__: Object
_65: 3
_72: null
__proto__: Object
scheduler: undefined
_isScalar: false
__proto__: Observable

Предупреждение:

YellowBox.js:67 Possible Unhandled Promise Rejection (id: 0):
Response {
  "_bodyBlob": Blob {
    "_data": Object {
      "blobId": "D985543E-CD51-470C-91F9-3407AE59FDA1",
      "name": "test-data",
      "offset": 0,
      "size": 0,
      "type": "application/json",
    },
  },
  "_bodyInit": Blob {
    "_data": Object {
      "blobId": "D985543E-CD51-470C-91F9-3407AE59FDA1",
      "name": "test-data",
      "offset": 0,
      "size": 0,
      "type": "application/json",
    },
  },
  "bodyUsed": true,
  "headers": Headers {
    "map": Object {
      "content-type": "application/json; charset=UTF-8",
      "server": "Jetty(9.2.z-SNAPSHOT)",
      "transfer-encoding": "Identity",
    },
  },
  "ok": true,
  "status": 200,
  "statusText": undefined,
  "type": "default",
  "url": "http://localhost:9999/testPath/pathData",
}

Я использую mergeMap для захвата ответа, не уверен, почему он не работает в этом случае

Код:

const testEpic: Epic<Action, ReduxState> = (
  action$: ActionsObservable<any>,
  store: MiddlewareAPI<any, ReduxState>,
) =>
  action$
    .ofType(TEST_GET)
    .mergeMap((action) => {
      return Observable.merge(
          .fetch('/testPath/pathData', payload) // return part which is working properly
          .mergeMap((response) => {
             // calls not coming here for POST, PUT, DELETE even though it is status 200
          })
      )
    }
    )
    .catch((error) => {

    })

Ответы [ 2 ]

2 голосов
/ 11 апреля 2020

Попробуйте это

fetch("/testPath/pathData", requestOptions)
  .then(response => response.text())
  .then(result => console.log(result))
  .catch(error => console.log('error', error));
1 голос
/ 14 апреля 2020

Я решил это, на самом деле это происходило внутри «ошибки» из-за несоответствия contentType

...