я хочу импортировать функцию ascynchronus в моем приложении в node.js - PullRequest
0 голосов
/ 30 ноября 2018

Следующий код - мой асинхронный код, который я хочу импортировать в мой файл app.js

module.exports = {
  foo : async () =>{
const axios = require('axios')
const [, pairA, pairB ] = require('./pairs.json')
const { SERVER_URL } = require('./lib/sdk')

const fundAccounts = async (pairs) => await Promise.all(
    pairs.map(
        async (pair) => await axios.get('/friendbot', {
            baseURL: SERVER_URL,
            params: { addr: pair.publicKey }
        })
    )
)

 fundAccounts([pairA, pairB])
    .then(() => console.log('ok'))
    .catch((e) => { console.error(e); throw e})
}
}

Ниже приведен файл server.js, который пытается импортировать и проверить вывод

var funding = require('./scripts/2_fundAccounts');

console.log(typeof(funding));
console.log(funding.foo())

// я получаю неопределенный

Далее я попробовал установить метод тайм-аута

function calling() {
var funding = require('./scripts/2_fundAccounts');
funding.foo()
}

setTimeout(calling,4000)

Любые предложения, как импортировать код и заставить его работать

Ответы [ 2 ]

0 голосов
/ 30 ноября 2018
var funding = require('./scripts/2_fundAccounts');

Здесь финансирование - это объект, который имеет только ключ foo.

Структура каталогов должна быть такой: - enter image description here

Вы пытаетесь вызвать fundaccount, которая является внутренней функцией foo, а не ключом финансирования (экспортобъект).Если вам действительно нужно вызвать эту функцию, вы должны создать прототип объекта из объекта экспотирования (this.__proto__) с внутренней стороны foo.Пожалуйста, найдите ниже код для возврата -

module.exports = {
  foo : async () =>{
    const axios = require('axios')
    const [, pairA, pairB ] = require('./pairs.json')
    const { SERVER_URL } = require('./lib/sdk')
    this.__proto__.fundAccounts = async (pairs) => await Promise.all(
        pairs.map(
            async (pair) => await axios.get('/friendbot', {
                baseURL: SERVER_URL,
                params: { addr: pair.publicKey }
            })
        )
    )
     this.fundAccounts([pairA, pairB])
        .then(() => console.log('ok'))
        .catch((e) => { console.error(e); throw e})
     }

}

0 голосов
/ 30 ноября 2018

Попробуйте это:

module.exports = async function foo () {
  // etc etc...
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...