0

スクリーンネーム(twitter)を使ってkloutスコアを取得したい。

これは私がしました。そのように機能しないことはわかっていますが、どのように機能するかはわかりません。

function get_klout(screenName){
  klout.getKloutIdentity(screenName, function(error, klout_user) {
    klout.getUserScore(klout_user.id, function(error, klout_response) {
       return Math.round(klout_response.score);
    });
  });
}

関数がこの数値を返すようにしたいMath.round(klout_response.score);

4

2 に答える 2

0
function get_klout(screenName) {

  klout.getKloutIdentity(screenName, function(error, klout_user) {

    klout.getUserScore(klout_user.id, function(error, klout_response) {

       return Math.round(klout_response.score);
    });
  });
}

関数は非同期であるため、未定義を割り当てるだけなので、返されるものを変数に割り当てることはできません。 var result = get_klout('foo'); // undefined

あなたができることは次のとおりです。

  1. async functionsで使用node 8+
  2. 使用してPromises
  3. 使用callbacks:
function get_klout(screenName, done) {

  klout.getKloutIdentity(screenName, function(error, klout_user) {

    klout.getUserScore(klout_user.id, function(error, klout_response) {

        done(Math.round(klout_response.score));
    });
  });
}

get_klout('foo', function(response) {
  console.log(response);
});

注意: In node は を実装する一般的なパターンでありerror first callback、エラーを処理するための伝統的でより使用されている方法であるため、それを確認する必要があります: http://fredkschott.com/post/2014/03/understanding-error-ノード内の最初のコールバック js/

于 2017-07-04T16:36:16.667 に答える