最新消息: 电脑我帮您提供丰富的电脑知识,编程学习,软件下载,win7系统下载。

承诺在使用列表时所有工具均无法正常工作

IT培训 admin 4浏览 0评论

承诺在使用列表时所有工具均无法正常工作

我希望回调在诺言完成时返回响应。我在答应所有人之前就得到了回应。批处理列表为空,因为它在全部承诺之前返回。

getByReferenceID(object, mode, limit, lastEvaluatedKey, callback){
        var results = {};
        var requestList = [];
        var batchList = [];
        var response = {};
       new Promise((resolve, reject) => {
            this.getRequestList(object, limit, lastEvaluatedKey,function (err, result) {
                console.log(result);
                results = result;
                if(err) {
                    reject();
                } else {
                    resolve();
                }
            });
        }).then(async () =>
        {
            requestList = requestList.concat(results.items);
            const runAsyncFunctions = async () => {
            var promises = [];
                requestList.map(async request => {
                    var promise = await this.getBatchList(request.requestID.S, mode, null, null, function(err, result) {
                        batchList = batchList.concat(result.items);
                    });
                    promises.concat(promise);
                });
               await Promise.all(
                    promises
                ).then(()=>{
                   response = {
                       "requests": requestList,
                       "batches": batchList,
                       "lastEvaluatedKey": results.LastEvaluatedKey
                   };
                   callback("", response);
               }).catch((error) => {
                console.log(error);
                });
            };
            await runAsyncFunctions();

        }).catch((error) => {
            callback(error, response);
        });
    }
回答如下:

承诺不是承诺的数组。

var promise = await this.getBatchList(request.requestID.S, mode, null, null, function(err, result) {
    batchList = batchList.concat(result.items);
});

稍后执行

callback("", response)

我想你想做这样的事情

var promises = [];

for (const request of requestList) {
  const promise = this.getBatchList(request.requestID.S, mode, null, null, function (err, result) {
    batchList = batchList.concat(result.items);
  });

  promises.push(promise);
}

await Promise.all(
...

承诺在使用列表时所有工具均无法正常工作

我希望回调在诺言完成时返回响应。我在答应所有人之前就得到了回应。批处理列表为空,因为它在全部承诺之前返回。

getByReferenceID(object, mode, limit, lastEvaluatedKey, callback){
        var results = {};
        var requestList = [];
        var batchList = [];
        var response = {};
       new Promise((resolve, reject) => {
            this.getRequestList(object, limit, lastEvaluatedKey,function (err, result) {
                console.log(result);
                results = result;
                if(err) {
                    reject();
                } else {
                    resolve();
                }
            });
        }).then(async () =>
        {
            requestList = requestList.concat(results.items);
            const runAsyncFunctions = async () => {
            var promises = [];
                requestList.map(async request => {
                    var promise = await this.getBatchList(request.requestID.S, mode, null, null, function(err, result) {
                        batchList = batchList.concat(result.items);
                    });
                    promises.concat(promise);
                });
               await Promise.all(
                    promises
                ).then(()=>{
                   response = {
                       "requests": requestList,
                       "batches": batchList,
                       "lastEvaluatedKey": results.LastEvaluatedKey
                   };
                   callback("", response);
               }).catch((error) => {
                console.log(error);
                });
            };
            await runAsyncFunctions();

        }).catch((error) => {
            callback(error, response);
        });
    }
回答如下:

承诺不是承诺的数组。

var promise = await this.getBatchList(request.requestID.S, mode, null, null, function(err, result) {
    batchList = batchList.concat(result.items);
});

稍后执行

callback("", response)

我想你想做这样的事情

var promises = [];

for (const request of requestList) {
  const promise = this.getBatchList(request.requestID.S, mode, null, null, function (err, result) {
    batchList = batchList.concat(result.items);
  });

  promises.push(promise);
}

await Promise.all(
...
发布评论

评论列表 (0)

  1. 暂无评论