Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/472.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/62.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_Mongoose_Async Await_Es6 Promise_Bulk - Fatal编程技术网

JavaScript-异步/等待不等待承诺解析

JavaScript-异步/等待不等待承诺解析,javascript,mongoose,async-await,es6-promise,bulk,Javascript,Mongoose,Async Await,Es6 Promise,Bulk,我想使用Mongoose的批量操作来升级事务。对于我的每个事务,我希望在一个循环中处理它们,在这个循环中,我需要使用承诺。在这个承诺解决之后,我想把upsert添加到bulk中 我这里的问题是,尽管我等待每个承诺的完成,但在任何承诺得到解决之前,大容量是在函数结束时执行的。我做错了什么,或者我怎样才能解决这个问题 const bulkTransactions = Transaction.collection.initializeUnorderedBulkOp(); transact

我想使用Mongoose的批量操作来升级事务。对于我的每个事务,我希望在一个循环中处理它们,在这个循环中,我需要使用承诺。在这个承诺解决之后,我想把upsert添加到bulk中

我这里的问题是,尽管我等待每个承诺的完成,但在任何承诺得到解决之前,大容量是在函数结束时执行的。我做错了什么,或者我怎样才能解决这个问题

   const bulkTransactions = Transaction.collection.initializeUnorderedBulkOp();

   transactions.forEach( async (transaction: any) => {

        // do some suff, fill transaction_data

        await Utils.processTransactionType(transaction).then((action: any) => {

            if (action) {
                // do other stuff
            }

            bulkTransactions.find({_id: hash}).upsert().replaceOne(transaction_data);

        }).catch((err: Error) => {
            // log error
        });
    });

    await bulkTransactions.execute().catch((err: Error) => {
         // log error
    });

据我所知,在使用
wait
时,您不再使用
then
返回值:

   const bulkTransactions =    Transaction.collection.initializeUnorderedBulkOp();

   transactions.forEach( async (transaction: any) => {

        // do some suff, fill transaction_data

        let action = await Utils.processTransactionType(transaction);

        if (action) {
            // do other stuff
        }

        bulkTransactions.find({_id: hash}).upsert().replaceOne(transaction_data);


    });

    await bulkTransactions.execute().catch((err: Error) => {
         // log error
    });

什么是
事务。forEach
?它如何处理回调返回的承诺?事务只是一个事务对象数组。我使用
forEach
遍历数组,这是一个问题:-)正确,但不一定有问题。这并不能解决问题