2016-09-30 2 views
0

は、私は、約束に新たなんだと約束して「コールバック地獄」を回避するための正しい方法であるかを理解したいと思います約束で「コールバック地獄」を避けるには?私が使用してコールバックとしてまったく同じ問題を抱えているので、

foo(a: number): Promise<boolean>{ 
    return doSomething(a).then((b)=>{ 
     return doAnotherThing(b).then((c)=>{ 
      return true; 
     }) 
    }) 
} 

だけを見てこのピラミッド..

どうすればこの問題を回避できますか?事前

+0

NodeJSを使用@Mijago –

+0

'リターンdoSomethingの(A).then(doAnotherThing).then(C => TRUE)がシンタックス' – Bergi

答えて

1

おかげだけではなく、それらをネストの約束をチェーン:

foo(a: number): Promise<boolean> { 
    return doSomething(a).then((b) => { 
     return doAnotherThing(b); 
    }).then((c) => { 
     return true; 
    }); 
} 

はチェーン、その後、あなたは約束は約束(または他の値)を返すことができますhttps://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Promise

+0

? – owaishanif786

+0

@ owaishanif786どういう意味ですか?これはおそらくTypeScriptとES6 Promisesです。 – str

1

を参照してください。それで.then()

foo(a: number): Promise<boolean>{ 
    return doSomething(a).then((b)=>{ 
     return doAnotherThing(b); 
    }).then((c)=>{ 
     return true; 
    }); 
} 
0

バーベル、ES2015を使用する場合は、待つことができます。

例えば、

async function foo(a) { 
    var b = await doSomething(a); 
    var c = await doAnotherThing(b); 
    return true; 
} 

プリセット:ES2015、ステージ3

+2

それはES2015ではありません。 – Bergi

+0

@Bergiあなたは小柄な人ですか? – Keith

+0

はい、私は:-)です。バージョンの詳細を気にしたくない場合は、単に「ES next」または「ES harmony」と呼んでください。しかし、async/awaitはES6(ES2015)の一部ではありませんので、答えを修正し、 – Bergi

関連する問題