0

jsonixライブラリは規約に従っていないため、 first argument must be an errorbluebird を使用して次のように約束することにしました。

    return new Promise(function(resolve, reject) {
      try {
        unmarshaller.unmarshalString(xmlResponse,
          function (unmarshalled) {
            ...
            resolve(unmarshalled);
          });
      }
      catch (error) {
        reject(error);
      }
    });

しかし、これは無期限にハングアップします!一方、単純xmlResponseにファイルに保存してから、別の方法で処理すると: unmarshalFile... 約束はうまく機能しているようです!

    return new Promise(function(resolve, reject) {
      try {
        unmarshaller.unmarshalFile('test1.xml',
          function (unmarshalled) {
            ...
            resolve(unmarshalled);
          });
      }
      catch (error) {
        reject(error);
      }
    });

だから私の質問は、なぜある方法では約束が失敗し、別の方法では失敗しないのでしょうか?

4

2 に答える 2

1

免責事項:私はJsonixの作成者です。

unmarshalURLandunmarshalFileは非同期ですが (そうである必要があります)、unmarshalStringorunmarshalDocumentは非同期ではありません (そうである必要はありません)。

于 2016-09-15T10:13:48.320 に答える