1. ホーム
  2. javascript

[解決済み] Q.nfcallとQ.fcallの違いは何ですか?

2022-02-13 06:18:47

質問

私はnode.jsの初心者です。私はQ.nfcallを理解しようとしています。 私は以下のNode.jsのコードを持っています。

function mytest() {
  console.log('In mytest');
  return 'aaa';
}

Q.nfcall(mytest)
.then(
  function(value){
    console.log(value);
});

私が期待する出力は、次のようになるはずです。

In mytest 
aaa

しかし、実際に出力されるのは

In mytest

上のコードでQ.nfcallをQ.fcallに変更したら、期待通りの出力になりました。

In mytest 
aaa

なぜでしょう?Q.nfcallとQ.fcallは何が違うのでしょうか?ありがとうございます。

どのように解決するのですか?

からの Q のドキュメントを参照してください。

Node.jsのコールバックを利用した関数を扱う場合 パターン、つまりコールバックが function(err, result) の形式である場合、 Q は、これらの間で変換を行うための便利なユーティリティ関数をいくつか提供しています。 最もわかりやすいのは、おそらくQ.nfcallとQ.nfapplyでしょう。

その意味するところは nfcall() はNodeスタイルを期待します。 function(cb) を呼び出すと cb(error, result) . と書くと

Q.nfcall(mytest)
.then(
  function(value){
    console.log(value);
});

Q が期待される。 mytest で渡されたコールバックを呼び出します。 (error, value)Q を呼び出すと next コールバックは value . ですから、あなたのコードは次のようになるはずです(以下はその例です)。 プランクル ):

function mytest(cb) {
  console.log('In mytest');
  cb(null, 'aaa');
}

Q.nfcall(mytest)
.then(
  function(value){
    console.log('value', value);
});

を調べることができます。 nfcall() のテストケース を使えば、もっと深く理解できるはずです。