Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/426.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 访问aync函数返回的最佳方式_Javascript_Reactjs_Asynchronous - Fatal编程技术网

Javascript 访问aync函数返回的最佳方式

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

我在react应用程序中有以下代码。我无法访问单独文件中的返回值,因为这是一个异步任务。捕获此函数返回值的最佳方法是什么?是用promise对象包装代码吗

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)
})