我需要將response.data取出承諾,以便可以通過封閉函數返回。我知道我可能無法按照我編寫它的方式進行編寫,因爲它的JavaScript範圍正常。有什麼辦法可以做到嗎?如何從承諾中返回數據
#1處的console.log會生成正確的數據。 console.log#2總是產生'a';
function addSiteParentId(nodeId) {
var theParentId = 'a';
var parentId = relationsManagerResource.GetParentId(nodeId)
.then(function(response){
theParentId = response.data;
console.log(theParentId); // #1
});
console.log(theParentId); // #2
return theParentId;
}
任何指針,將不勝感激。
你費心尋找現有的關於這個問題嗎? – Amit
否 - 你不能 - 你想用'response'完成的操作必須放在'.then()'處理程序中。您不能在同步樣式中編寫異步JavaScript! – slugonamission
這不是關於從承諾中返回數據。 第二個'console.log'發生在承諾設置'theParentId'變量之前 - 因爲承諾是異步而'console.log'不是。 – JordanHendrix