2017-07-12 5 views
4

簡単な例を考えてみましょう。fs.stat。私はfs.statをpromisifyして書き込むことができます。エラーについて気にしないときは、&waitを待ちます

const stats = await stat(file, fs.constants.R_OK); 

が、ファイルが存在しない場合、これはスローします。 try/catchで待ち合わせる以外に、ここで使用できるクリーンなパターンやラッピングライブラリはありますか?おそらくstats === undefined | nullで終わる何か?

+0

@hindmost - これはとは何の関係もありませんノード、私はちょうど例としてノードを使用した –

答えて

3

多分これは何か?

function caughtAwait(func){ 
    try{ 
    return await func(); 
    } 
    catch(e){ 
    console.log(e); 
    return null; 
    } 
} 
const stats = caughtAwait(()=>stat(file, fs.constants.R_OK)); 
+0

ええ、私は配列( 'Promise.all')と私が思い付くことができる何かを扱うこのような単純なlibを書くことを検討しています。私はほとんど誰もがこれをして、さまざまなケースを考えている場合は、ほとんど興味があります –

+0

私は理解していますが、あなたが望むものは単純すぎると思われますが、外部ライブラリを使用するIMHO。私がここで間違っている本当のチャンスもあります。がんばろう –

0

どのように単純なラッパーについて:

async function leniently(promise) { 
    try { 
     return await promise 
    } catch(err) { 
     return null 
    } 
} 

任意の約束のために使用される:

const result = await leniently(stat(file, fs.constants.R_OK)) 

またはPromise.all(...)

const result = await leniently(Promise.all(...)) 
関連する問題