Ich habe viele sehr ähnliche Fragen gesehen, aber keine direkte Antwort für das tatsächliche Warten geben. Ich habe ein Skript basierend auf Bookshelf.js;Node.js Warten auf Rückruf oder Datenbank Antwort
var Product = bookshelf.Model.extend({
tableName: 'amazon_products',
hasTimestamps: true,
virtuals: { //https://github.com/bookshelf/bookshelf/wiki/Plugin:-Virtuals
hasSiteProduct: function() {
var product_references = this.related('siteProductsReferences').fetch()
return product_references.length;
}
}
});
Ich habe Setup eine virtuelle Eigenschaft, die einfach die OneToMany Beziehungen des Modells zählen und den Zählwert zurück. Aber in diesem Fall sieht es so aus, als ob this.related('siteProductsReferences').fetch()
einige Zeit dauern muss, bevor eine Antwort zurückgegeben wird. Die this.related('siteProductsReferences').fetch()
hat auch ein Versprechen, das so aussehen kann;
this.related('siteProductsReferences').fetch().then(function(result) {
// ...
});
Ich baue dies um über eine API zurückgegeben werden. Wenn ich einfach return this.related('siteProductsReferences').fetch()
zu der Methode hinzufüge, bekomme ich eine volle l bekommen;
,"hasSiteProduct":{"isFulfilled":false,"isRejected":false}
So klar ist der Rückruf nicht beendet.
Wahrscheinlich ein Duplikat von [Wie gebe ich Antwort von einem asynchronen Aufruf zurück] (https://stackoverflow.com/questions/14220321/how-do-i-return-the-response-from-an-asynchronous-call). – jfriend00
'this.related ('siteProductsReferences'). Fetch()' gibt scheinbar ein Versprechen zurück. Sie verwenden '.then()' in einem Versprechen, einen Rückruf zu registrieren, der aufgerufen wird, wenn er einen Wert hat. – jfriend00
Mögliches Duplikat von [Wie gebe ich die Antwort von einem asynchronen Anruf zurück?] (Https://stackoverflow.com/questions/14220321/how-do-i-return-the-response-from-an-asynchronous-call) – peteb