私は、約束を返さなければならないことを理解しており、約束を守るという約束の結果ではないことを理解しています。新しい約束を作成するには?
がCreateNextBatch() {
this.orders.clear();
let maxNum = this.maxNum;
let counter = this.orderCounter;
let CreateThem = (counter, r) => {
if (r >= 0) {
//Order.find() finds an entry in a database
Order
.find({orderNr: counter.fullNumber()})
.then(function(orders) {
console.log("created order " + counter.fullNumber().toString());
let num = r;
if (orders.length === 0) {
this.OpenOrder(counter.fullNumber());
//adds order to this.orders
num -= 1;
}
counter.nextNumber();
return CreateThem(counter, num);
}.bind(this))
.catch (function (err){
console.log(err);
return false;
});
} else {
return true;
}
};
return() => {CreateThem(counter, maxNum);};
}
基本的にはthis.MaxRequests
空のスポットを発見した後終了し、再帰的な方法で注文を作成し、中にそれらを一緒に置く:私はこれを実装することができないように見えるしかし
は、私のようなメンバメソッドを持っていると言いますしかしTHI
initialLoader.CreateNextBatch().then(function (success) {
console.log(success);
console.log("loaded");
initialLoader.initializeBatch();
});
:this.orders
下のリストは、今、私がすることで、この関数を呼び出しましたは失敗する:
TypeError: initialLoader.CreateNextBatch(...).then is not a function
at LoadExternDatabase...
なぜこれが機能しないのですか?私はまだ何を理解していないのですか?
編集:私はまた、新しい約束によってリターンを交換しようとしました:
return new Promise((resolve, reject) => {
CreateThem(counter, maxRequests);
resolve();
});
しかし、これはimmediatelly決意を実行し、代わりのCreateThemが完了するのを待っています。 NOR直接お約束かと言うイベントを待っているいくつかのコードを持っているだろうその前にreturn CreateThem.bind(this, counter, maxRequests);
iあなたはそのコードの中で約束を作成したり返すことはありません。 – WilomGfx
@WilomGfx私はいませんか? - 私はsailjsに関するドキュメントの一番下の "例"に従っています:https://sailsjs.com/documentation/reference/waterline-orm/models – paul23
はい、あなたの '.NextBatch()'を呼び出してください。 'createNextBatch()'から約束を返すことはありません。 – WilomGfx