2
は、私は角1.5を使用して、私はこのようなオブジェクトリテラル返しでファクトリ関数作られた:関数宣言に変更するために私に聞かないでくださいどのようにモジュールのパターンをそれぞれの機能を約束するか?
return {
item: null,
get: function() {
return item;
},
create: function() {
if (this.get()){
this.remove();
}
this.item = {};
},
remove: function() {
var item = this.get();
if (item) {
this.item = null;
}
},
add: function() {
if (!this.get()) {
this.create();
}
this.item.newprop = 'value';
}
}
を。私は、自分の行動(機能)と仕事をしているオブジェクトが欲しい。
このパターン(
get
の中にcreate
などあります)どこからでもコピーしませんでした。だから名前がついているのだろうか?ファンクションブラックボックスに対処する最善の方法は?プロミスを入れるにはどのような方法が良いですか?すべての関数は約束を返す必要があります
すべて
then
関数私はbind
を使用する必要がありますか?このようなTODO:
あなたはすべてのその後、コールバック関数内でバインドを使用する必要がcreate: function() { this.get() .then(remove) .then(function() { this.item = {}; // BUT this === undefined!! }); }
それぞれの方法を変更して約束を返すだけの答えではありませんか?私は、あなたが「約束を入れる最善の方法は何ですか?」と言ったときに、あなたが何を求めているのか分かりません。あなたの非同期操作が約束を返すようにして、メソッドがそれらの非同期操作の1つを使用する場合は、約束を返します。 – jfriend00
'//しかしこれは===未定義です!! ' - これは" this "がどのように動作するかに起因しています - それについての情報がたくさんあります - bindを使うよりもむしろ一つの回避策は古い' var _this = this; 'です。 - またはarrow =>関数を使用する –
'get'メソッドの' item'は何を参照していますか? – Bergi