Javascript 访问aync函数返回的最佳方式
我在react应用程序中有以下代码。我无法访问单独文件中的返回值,因为这是一个异步任务。捕获此函数返回值的最佳方法是什么?是用promise对象包装代码吗Javascript 访问aync函数返回的最佳方式,javascript,reactjs,asynchronous,Javascript,Reactjs,Asynchronous,我在react应用程序中有以下代码。我无法访问单独文件中的返回值,因为这是一个异步任务。捕获此函数返回值的最佳方法是什么?是用promise对象包装代码吗 import jsYaml from 'js-yaml'; import SwaggerValidator from 'swagger-parser'; export function parseYaml(yamlString) { let parsedYamlJson; try { parsedYamlJs
import jsYaml from 'js-yaml';
import SwaggerValidator from 'swagger-parser';
export function parseYaml(yamlString) {
let parsedYamlJson;
try {
parsedYamlJson = jsYaml.safeLoad(yamlString);
SwaggerValidator.validate(parsedYamlJson)
.then((parsedJson)=>{
return {
isError: false,
message: '',
swaggerJson: parsedJson
}
})
.catch((parseException)=>{
return {
isError: true,
message: 'Invalid Swagger JSON',
swaggerJson: {}
}
})
} catch (yamlException) {
return {
isError: true,
message: yamlException.message,
swaggerJson: {}
}
}
}
您可以使用
承诺
:
export function parseYaml(yamlString) {
return new Promise((resolve, reject) => {
let parsedYamlJson;
try {
parsedYamlJson = jsYaml.safeLoad(yamlString);
SwaggerValidator.validate(parsedYamlJson)
.then((parsedJson)=>{
resolve({
isError: false,
message: '',
swaggerJson: parsedJson
})
})
.catch((parseException)=>{
reject({
isError: true,
message: 'Invalid Swagger JSON',
swaggerJson: {}
})
})
} catch (yamlException) {
reject({
isError: true,
message: yamlException.message,
swaggerJson: {}
})
}
})
}
然后在其他文件中:
parseYaml('someString').then(res => {
console.log(res)
}).catch(err => {
console.log('error:', err)
})