글쎄, 나는 약속을 되돌려 주어야하고, 약속을 지키 겠다는 약속의 결과가 아니라는 것을 이해한다.새로운 약속을 만드는 방법은 무엇입니까?
이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
빈 지점을 찾은 후 종료, 재귀 방식으로 주문을 만든 다음에 함께 박았 :이 구현 할 수없는 것 같습니다 그러나
, 나는 같은 멤버 메소드가 있다고 가정 해 그러나 생
initialLoader.CreateNextBatch().then(function (success) {
console.log(success);
console.log("loaded");
initialLoader.initializeBatch();
});
: this.orders
아래 목록은 이제하여이 함수를 호출 s 실패 :
TypeError: initialLoader.CreateNextBatch(...).then is not a function
at LoadExternDatabase...
왜 작동하지 않습니까? 나는 아직 무엇을 이해하지 못하고 있는가?
편집 : 대신 CreateThem가 완료 될 때까지 기다리는
return new Promise((resolve, reject) => {
CreateThem(counter, maxRequests);
resolve();
});
그러나이 immediatelly 결의를 실행 : 나는 또한 새로운 약속에 의해 반환을 대체하기 위해 시도했습니다. 도 바로이 약속이나라는 이벤트를 기다리는 몇 가지 코드를했을 것이다 그 전에 return CreateThem.bind(this, counter, maxRequests);
그 코드에서 약속을 만들거나 반환하는 것을 보지 마라. – WilomGfx
@WilomGfx 나는 존재하지 않습니까?- 나는 sailjs에 관한 문서의 아래쪽 "예제"를 따라 가고있다 : https://sailsjs.com/documentation/reference/waterline-orm/models – paul23
yes. 당신의'createNextBatch()'를 호출한다. 'createNextBatch()'에서 약속을 전혀 반환하지 않습니다. – WilomGfx