Meine Frage beinhaltet Versprechen und bietet vorherige Werte von Kettenversprechen. Die Frage ist, ob das Item vom ersten Rückgabeversprechen an das zweite Versprechen "runItem -> testItem" übergeben wurde?Bereitstellung früherer Werte von Versprechen
Oder müssen wir den Gegenstand durch alle Versprechen gehen?
Beispiel:
db.items.find({_id: id}).then(function (res) {
runItem(item);
})
function runItem(item) {
removeFromQueue(item.id).then(function() {
testItem(item);
});
}
function testItem(item) {
...
}
function removeFromQueue(item) {
return db.queue.remove({_id: item._id});
}
EDIT: Vielleicht wäre dies ein besseres Beispiel sein:
Können wir original Attribut Element zugreifen, oder ist es überschrieben werde, wenn die nächste Zeitfunktion wird aufgerufen?
function start(id)
db.find({_id: id}).then(function (item) {
test(item).then(function (res) {
// can we access original attribute item, or is it going to be overwritten when the next time function is called
resolve({ res: res, item: item });
});
});
}
function test(item) {
return $test(item).then(function() {
resolve('success');
});
}
Sie sollen die Versprechen Objekte zurückzukehren. – thefourtheye
Ich verstehe nicht, was Sie mit Ihrem Code zu tun versuchen, aber nein, die vorherigen Werte werden nicht gespeichert, Sie müssen sie speichern, wenn Sie sie benötigen (in einigen Fällen ist es bequem, die Fähigkeit von Bluebird Versprechungen zu verwenden an ein Objekt gebunden sein). –
Ich möchte "Element" an testItem Funktion übergeben, aber "Element" ist ein Attribut in RunItem-Funktion. Der Code ist allgemein, meistens möchte ich nur wissen, ob es möglich ist, und wenn nicht, was ist der beste Weg, Variablen von einem Versprechen zum anderen zu übergeben. – puppeteer701