как правильно в промисе использовать функции 
		
		
		
		Доброго времени суток, 
	затертый до дыр вопрос выполнить одну функцию после другой. Очевидный путь - за промис, однако вызов функции такого вида func(arg)() не работает. 
let myPromise = new Promise
(
	(resolve, reject) => 
	{
		firstFunction(param)();
	  	resolve();
	}
);
myPromise.then(secondFunction(param)());
Но, secondFunction не ждёт зараза первую. Если поставить таймаут, то всё ОК: firstFunction(param)(); setTimeout(secondFunction(param)(), 2000); обе функции возвращают анонимную: 
function firstFunction(param)
{
	return () =>
	{
             ...
	}
}
Есть идеи как заставить работать?  | 
	
		
 Цитата: 
	
  | 
	
		
 А какая разница что все, что один промис? Не работает именно при использовании func(arg)() 
	 | 
	
		
 atanov, 
	может так? myPromise.then(secondFunction(param));  | 
	
		
 destus, не, тогда вызов второй функции не сработает. Вру, срабатывает, но всё равно не ждёт. 
	 | 
	
		
 myPromise.then(() => secondFunction(param)()); бинго?  | 
	
		
 destus, не, так тоже не срабатывает. Если без возврата анонимной функции, то всё замечательно работает, а вот с анонимной никак. А нужно, для передачи аргумента... 
	 | 
	
		
 Похоже это у меня баг, вот этот пример работает нормально: 
	
let myPromise = new Promise
(
	(resolve, reject) => 
	{
		let a = firstFunction(3000000000)();
		console.log(a);
	  	resolve();
	}
);
myPromise.then(secondFunction(25));
function firstFunction(param)
{
	return () =>
	{
		let i;
		for(i = 0; i < param; i++)
		{
		}
		return i;
	}
}
function secondFunction(param)
{
	return () =>
	{
		console.log(param);
	}
}
 | 
	
		
 
function one(value) {
    console.log(value)
  }
  new Promise((res, rej) => {
    res('supervalue')
  })
    .then(one) // здесь one это ссылка на ф-цию 
    // это можно переписать по другому .then(valueFromPromise => one(valueFromPromise))
или еще вариант, ) не понятен смысл зачем это надо... 
function one(value) {
  console.log('one', value)
  return Promise.resolve(value)
}
function anonymous(twentyFive, value) {
  return new Promise((res, rej) => {
    res(() => {
      console.log('anonymous', twentyFive, value)
    })
  })
}
async function job() {
  const anonymousInstance = await new Promise((res, rej) => {
    res('supervalue')
  })
    .then(one) // здесь one это ссылка на ф-цию // supervalue
    // это можно переписать по другому .then(valueFromPromise => one(valueFromPromise))
    .then(anonymous.bind(null, 25)) // curring - вроде бы %)
    .then(anonymousFoo => anonymousFoo())
}
job()
function one(value) {
  console.log('one', value)
  return Promise.resolve(value)
}
function anonymous(twentyFive) {
  return value => {
    console.log('anonymous', twentyFive, value)
  }
}
new Promise((res, rej) => {
  res('supervalue')
})
  .then(one) // здесь one это ссылка на ф-цию // supervalue
  // это можно переписать по другому .then(valueFromPromise => one(valueFromPromise))
  .then(anonymous.bind(null, 25)()) // curring - вроде бы %)
function one(value) {
  console.log('one', value)
  return Promise.resolve(value)
}
function anonymous(twentyFive) {
  return value => {
    console.log('anonymous', twentyFive, value)
  }
}
new Promise((res, rej) => {
  res('supervalue')
})
  .then(one)
  .then(anonymous.call(null, 25))
 | 
	
		
 SuperZen, 
	да не, всё ок с промисами, просто у меня "руки не из того места...":cray:  | 
	
		
 Цитата: 
	
 Асинхронная функция сама по себе должна возвращать промис, либо принимать коллбэк. Если этого не предусмотрено - ты никак не сможешь её ждать.  | 
| Часовой пояс GMT +3, время: 06:36. |