2016-12-25 28 views
0

私は、同期でビルドされているが非同期呼び出しを使用している関数をどのように変換するのか分かりません。nodejs非同期機能する方法?

do_thing =() => { 
    var N = new Thing(); //sync 

    N.do_that();  // calls fs.readFile() and does some stuff with data :async 
    this.array.push(N); // sync but does not affect anything 
    this.save();  // calls fs.writeFile() but needs info from N that is not created yet as N.do_that() is not done 
} 

私はそれはとてもN.do_that()が行われたときに、それは、その後this.save()を呼び出すようにする方法を確認していません。私はfs.readFileSync()またはfs.writeFileSync()を使いたくありません。私は何かのようなものを知りたいです:

N.do_that().then(this.save()); 

答えて

0

私はそれを理解しました。私のN.do_that()内;

do_that = (callback) => { 
    fs.readFile("file", (err, fd) => { 
    // do stuff with fd 

    callback(); 
    return; 

    }); 
} 
その後、

ではなく、呼び出し::私は、そうのようなもののコールバックを追加しました私は

N.do_that(() => { 
    array.push(N); 
    this.save(); 
}; 
0

をした

N.do_that(); 
array.push(N); 
this.save(); 

をあなたは既にサードパーティ、オープンソースのツールを使用することができます助けになるように約束されたバージョンを提供します! 1つのGoogle検索で明らかにされた:https://www.npmjs.com/package/fs-promise

それ以外の場合は、https://stackoverflow.com/a/34642827/3814251のヒントを使用して自分で方法をお約束することができます。

(あるいは自分の回答で投稿したコールバックを使用してください)