我有一個函數「mapTranslations」,它從服務器獲取數據,然後映射它。目前我使用回調來返回數據。我不想使用承諾,但我沒有辦法就如何返回映射的數據而不是來自「somePromiseReturningFunction」的數據。 JS Promise:返回映射數據
function mapTranslations(callback){
somePromiseReturningFunction(...).then(function (languageData) {
var translations = {};
languageData.d.results.forEach(function (obj) {
translations[obj.key] = obj[browserLang];
});
callback(translations);
});
}
使用這樣的:
mapTranslations(function(translations){
console.log(translations);
});
目標:
mapTranslations().then(function(translations){
console.log(translations) //Example, wouldn't be an anonymous function
});
是的,這正是我所期待的。我沒有現在你可以像這樣回報它。當然,在回調中包裝承諾並不是要走的路 - 這就是我寫這個問題的原因。 :) – sandrooco
@Sandrooco - 我增加了一個新建議,用'.reduce()'而不是'.forEach()'來縮短代碼。 – jfriend00
看起來不錯 - 爲什麼翻譯在第二次迭代中未定義? – sandrooco