我如何从一个数组中处理一个promise数组作为一个函数

时间:2019-05-15 22:45:58

标签: javascript node.js ecmascript-6 promise es6-promise

我有一个问题,如何并行解决一组诺言,让这些诺言在响应中做一些不同的事情。

我有可以正常处理我的诺言数组的代码,但是来自myFunction的响应是相同的。这就是我期望数组中的最后一项。

传递给template的参数createTemplate在每个实例中都是正确且唯一的。

const newman = require('newman')
const fse = require('fs-extra')
const { promisify } = require('util')
const path = require('path')

const np = promisify(newman.run)

const templateCollection = require('./template-collection.json')

const templateList = [
    "template1.html",
    "template2.html",
    "template3.html"
]

const email = 'user@example.com'

const basePath = path.join(process.cwd(), 'assets')
const templatePath = path.join(process.cwd(), 'templates', `${email}`)

let collection = {}

myApp()

async function myApp() {
    try {
        await fse.ensureDir(`${templatePath}`)
        await fse.ensureDir(`${basePath}`)

        const promises = templateList.map(createTemplate)
        await Promise.all(promises)

        process.exit()

    } catch (e) {
        console.log('ERROR: ', e)
    }
}

const createTemplate = template => {  
    collection[template] = Object.assign({}, templateCollection)
    collection[template].item[0].request.body = `{email: ${email}, templateFileName: ${template}}`
    return np({
        collection: collection[template],
        environment: {},
        globals: {}
    })
    .then(res => {
        fse.writeFile(`${templatePath}/${template}`, res.run.executions[0].response.json().content, 'base64')
    })
}

0 个答案:

没有答案