我试图在承诺运行函数后返回一个值,一旦所有承诺完成,就像下面的代码一样。
var promises = [];
var userInfo = null;
export function userRunner(userData) {
userData.forEach(function (obj) {
let x = fetch(apiURL1)
.then(function (data) {
return data.json()
})
promises.push(x);
let y = fetch(apiURL2)
.then(function (data) {
return data.json()
})
promises.push(y);
});
Promise
.all(promises)
.then(function (results) {
return plotChart(results); //How do I return this only when it's done below?
}).catch(function (error) {
console.log(error);
});
}
function plotChart(obj){
//do some work with userInfo and return userInfo
return userInfo;
}
基本上所有提取都已完成,Promise.all
运行它会调用返回值的plotGraph
函数。如何仅在plotGraph
完成后返回此值?
我正在使用es6
这样的
import {
userRunner
} from './graph'
非常感谢任何帮助。
答案 0 :(得分:2)
您可以从组件中返回承诺链:
export function userRunner(userData) {
return Promise
.all(promises)
.then(function (results) {
return plotChart(results);
})
}
然后继续导入文件中的链:
import { userRunner } from './graph'
userRunner(userData).then(function (chartedResults) {})