私の質問には約束が含まれており、連鎖約束の以前の価値を提供しています。質問は、最初の返品約束から2回目の約束 "runItem - > testItem"に渡された項目ですか?約束の前の値を提供する
または、約束どおりにアイテムを渡す必要がありますか?
例:
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: 多分これが良い例だろう。
は、我々は、元の属性項目にアクセスすることができ、またはそれはときに上書きされようとしています次回の関数呼び出しは?
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');
});
}
のようにあなたは約束のオブジェクトを返すことになっています。 – thefourtheye
あなたのコードで何をしようとしているのか分かりませんが、以前の値は保存されていません。必要に応じて保存する必要があります(場合によってはbluebirdの約束を使用すると便利です。オブジェクトに束縛される)。 –
"item"をtestItem関数に渡したいが、 "item"はrunItem関数の属性である。コードは一般的なものであり、可能な場合には私が知りたいことがほとんどですが、そうでない場合は、ある約束から別の約束に変数を渡す最善の方法は何ですか。 – puppeteer701