2017-05-08 27 views
0

私はxml2jsを使用しています。xmlのソースが整形式であるという保証がないため、堅牢である必要があります。ですから、すべてのエラーを確実に処理できるようにする必要があります。私はparseStringは、すべてのエラーは、コールバックへerrオブジェクトとして渡されていることを、エラーをスローしないことを保証xml2jsは同期していることが保証されていますか?エラーが発生しますか?

let parseString = require('xml2js').parseString; 
let xml = getTheXml(...); 
parseString(xml, (err, result) => { 
    if (err) { handleError(err) } 
    else { handleResult(result); } 
}); 

アム:コードは次のようになりますか?

それとも安全であると、私は次の操作を行う必要があります:

let parseString = require('xml2js').parseString; 
let xml = getTheXml(...); 
try { 
    parseString(xml, (err, result) => { 
    if (err) { handleError(err) } 
    else { handleResult(result); } 
    }); 
} catch (err) { handleError(err); } 

さらに、私はparseStringが同期実行されることを保証するのですか?

答えて

1

error-first-callbackデザインが実装されている場合の予想される動作は、同期していないことと、エラーが最初の引数として渡されることです。

"保証されています"私はモジュールの作成者でも貢献者でもないので、そのことについて何も言えません。あなたが確かめる必要がある場合は、テストを書く。

+0

私はテストを書いたが、テストではパスが同期していることが保証されている。このメソッドの他のパスが同期しているかどうかはテストされません。パッケージの将来のバージョンが同期したままであることもテストしません。私は、パッケージのAPI契約について明確にしたいと考えています。これは、パッケージ開発者のうちの1つだけが答えるものです。 –

+0

あなたの 'package.json'にversionを指定して、3:dパーティライブラリの変更を壊さないようにアプリケーションを保護する必要があります。 – superhero

+0

公正なポイント。私もこれをやっていますが、APIの背後にある契約を知っていると、私がアップグレードしたいときに私はより自信を持ってくれます。コードを調べたところ、解析メソッドがスローされないと確信しています。私は、ライブラリが標準のノードコールバックを使用すると仮定する必要があると思います。 –

関連する問題