제 질문은 약속의 가치와 이전 약속 값을 제공합니다. 문제는 첫 번째 반환 약속에서 두 번째 약속 "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});
}
편집 : 어쩌면이 더 나은 예를 들면 다음과 같습니다
우리가 액세스 할 수있는 원래의 속성 항목거나 덮어 쓸 것 인 경우 다음에 함수가 호출됩니까?
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