コールバックと約束を組み合わせて試してみることにしました。私の文脈では、私は実際の約束を使用するのではなく、「当時」の約束の表記を使用しています。私は、オブジェクトを返すコールバックを持つ関数を呼び出そうとしています。そのオブジェクトは、最初の呼び出しに関連付けられたthen()メソッド内の関数を呼び出す関数を持つオブジェクトを返します。オブジェクトのオブジェクトとプロパティを返すコールバックが期待通りに呼び出されない
function step1(arg,callback) {
\t //do stuff
var obj = {key:"value"};
callback(obj);
}
function step2(obj) {
\t //do something to obj
obj.key2 = "hey";
return {
\t andthen: function(callback) {
\t callback(obj);
}
\t };
}
function step3(obj) {
//modify obj more
console.log(obj);
}
step1('arg1',step2).andthen(function(obj) { step3(obj); });
キャッチされない例外TypeErrorこのコードの結果は:未定義のプロパティを読んで 'andthen' することはできません以下は、私のコードです。 Since step1('arg1',step2)
はオブジェクトを返していますが、なぜjavascriptがオブジェクトの "andthen"プロパティを呼び出せないのですか?私はJavaScriptが非同期であることを理解しますが、.andthen(function(obj) { step3(obj); })
はstep1
が完了するまで待つことになります。
'step1'は何も返さない*(' undefined'を除いて)*なので、あなたはその部分で間違っていて、連鎖することはできません。 – adeneo
また、おそらくこれは人為的な例ですが、このコードは非同期的な処理を行わないので、何がポイントですか? 3つのメソッドを順番に呼び出します。 – bhamlin
実際に 'step1( 'arg1'、function(o){step2(o)andand(step3)});' – adeneo