Как функция может принимать вызовы, передавая различные объекты в качестве параметров? - PullRequest
0 голосов
/ 20 марта 2019

У меня более одного вызова одной и той же функции, и каждый вызов передает свой объект параметров. Например:

function masterStart() {
  A(optionsA);
  A(optionsC);
}

Я не знаю, как написать код в функции A(), чтобы использовать переданные параметры каждого объекта? Если бы я использовал только объект optionsA, я бы получил к ним доступ в функции A(), написав, например, optionsA.soundFileName. Но что мне делать, когда выполняется второй вызов A(), который передает параметры от объекта optionsC?

Вот уменьшенная версия моего кода, которая пока не может получить доступ к параметрам из objectC:

var optionsA = {
  soundFileName: 'audio/60.wav',
};

var optionsC = {
  soundFileName: 'audio/90.wav',
};

masterStart();

function masterStart() {
  A(optionsA);
  A(optionsC);
}

function A() {
  soundFileName = optionsA.soundFileName;
  console.log('soundFileName: ' + soundFileName)
  // This logs "audio/60.wav" twice instead of "audio/60.wav" and "audio/90.wav"

  // THE REST OF THE CODE THAT PLAYS AND LOOPS THESE SOUNDS SHOULD FOLLOW HERE
}

Смежный вопрос: если оба A() и C() инициализируются одновременно, иногда будет запускаться только одна функция, или одна будет выполняться с параметрами другого вызова (по моему опыту), потому что javascript - это одно резьба. Есть ли лучшее решение для их точного выполнения, чем инициализация с задержкой (чего я не делаю в этом коде)?

1 Ответ

3 голосов
/ 20 марта 2019

Вы можете сделать что-то вроде этого

function A(params) {
  soundFileName = params.soundFileName
  // and the rest
}

или вот так

function A({soundFileName}) {
  console.log(soundFileName)
  //...
}

Редактировать: фрагмент

const optionsA = {
  soundFileName: 'audio/60.wav',
}

const optionsC = {
  soundFileName: 'audio/90.wav',
}

function A(params) {
  console.log("soundFileName: " + params.soundFileName)
}

A(optionsA)
A(optionsC)
...