1

コールバック関数から変数の値を取得しようとしています。私はここで何が間違っているのですか?

var storyList = [];
var storyTemp ={};

// get list of all stories
db.getAllStoriesSet(function(err, reply) {
    if (err) throw err;
    else {
        storyList = reply;
        console.log("storylist inner: " + storyList);
    };
});
console.log("storylist outer: " + storyList);

上記のコードでは、ストーリーリストの内側と外側の値が同じであると期待しています。ただし、外側のstoryList値は引き続きnullリストとして提供されます。

編集:質問に追加します。async関数の外で変数storyListを初期化しました。次に、async関数から応答を受け取り、それを変数storyListに入れます。私は、自分自身のために掘ったと思われる、ゆっくりとした残忍な死の非同期の穴から抜け出すことを望んでいました。それはうまくいくべきではなかったのですか?

4

1 に答える 1

5

が非同期の場合getAllStoriesSet、コールバックが実行される前に、その呼び出しに続く行が呼び出されます。だからstoryList、電話の前と同じです。

これが、コールバックを提供する理由です。コールバック内に、の値を必要とするコードを配置する必要がありますreply

于 2013-01-23T20:39:51.297 に答える