Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/401.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处理多个异步函数?_Javascript_Error Handling_Promise_Async Await_Amazon Dynamodb - Fatal编程技术网

如何使用javascript处理多个异步函数?

如何使用javascript处理多个异步函数?,javascript,error-handling,promise,async-await,amazon-dynamodb,Javascript,Error Handling,Promise,Async Await,Amazon Dynamodb,我有一个函数,首先从url获取结果,然后将其放入dynamo db: const result = await fetch(constants.GITHUB_NA_VERSION_NUMBER_URL) .then(res => res.json()) .then((jsonData) => { // jsonData is what i am trying to return }); dyn

我有一个函数,首先从url获取结果,然后将其放入dynamo db:

 const result =  await fetch(constants.GITHUB_NA_VERSION_NUMBER_URL)
        .then(res => res.json())
        .then((jsonData) => {
        // jsonData is what i am trying to return
        });
            dynamoDb.put(
                {
                    "TableName": "tableName",
                    "Item": {
                        "A": "A",
                        "B": "B",
                        "C": "C",
                    }
                }, function(result) {
                    result.on('data', function(chunk) {
                        console.log("" + chunk);
                    });
                });
    if ( ! result) {
        throw new Error("Item not found.");
    }
    return result;
当然,放入DB取决于首先得到的结果。 正如您所看到的,这段代码很混乱,没有错误处理。 我希望代码能够:

  • 每当发生错误时停止执行
  • 返回一个带有失败状态代码的响应,以便我可以判断哪一步出错
  • 所以我关注这篇文章

    将我的函数重写如下:

    const errorHandler = (promise) => {
    
        return promise
            .then(res => ([res.json(), undefined]))
            .catch(error => Promise.resolve([undefined, error]));
    };
    
    let [latestVersionNumber, latestVersionNumberErr] = await errorHandler(fetch(constants.GITHUB_NA_VERSION_NUMBER_URL));
    console.log(latestVersionNumber);
    if (latestVersionNumberErr) throw new Error("Failed to get lastest version number, please try again late.");
    
    log(latestVersionNumber)给了我
    Promise{}

    现在我不得不重写dynamoDB.put函数,因为它已经不起作用了

    基本上,我需要处理多个异步函数的错误,如果发生任何错误,它应该立即停止。 我认为dynamoDb.put会返回一个承诺,所以我想我应该将put函数包装成一个自定义异步函数,但不确定如何实现。很明显,我遗漏了一些东西。 提前谢谢。

    你真的应该跟着。
    errorHandler
    助手非常糟糕。