связать строку с обещанием - PullRequest
0 голосов
/ 07 июня 2018

Как бы я включил это обещание в строку?

Допустим, у меня есть

function BaseUrl() {        
    return new Promise(function(resolve, reject) { return some_string;
  });
}

Я использую приведенную выше функцию (BaseUrl()) ниже:

function FirstChar() {
    return new Promise(function(resolve, reject) { return BaseUrl() + "some/suffix";
  });
}

Как связать строку с обещанием?

Ответы [ 3 ]

0 голосов
/ 07 июня 2018

Нет смысла использовать Promise просто для возврата строки, но если вы хотите, вам придется передать строку (и объединенную строку) в каждый resolve:

function BaseUrl() {
  return new Promise(function(resolve) {
    resolve('some_string');
  });
}

function FirstChar() {
  return BaseUrl()
    .then(baseUrlStr => {
      return new Promise(function(resolve) {
        resolve(baseUrlStr + "some/suffix");
      });
    })
}

FirstChar().then(fullURL => console.log('got ' + fullURL))
0 голосов
/ 07 июня 2018

Не знаю, почему ваша вторая функция называется FirstChar ... игнорируя это, вы имеете в виду

function FirstChar(baseUrlPromise) {
  return baseUrlPromise.then(baseUrl => baseUrl + "some/suffix");
}

или

function FirstChar() {
  return BaseUrl().then(baseUrl => baseUrl + "some/suffix");
}

b / c тип возврата этих являются (строка) Обещание.

0 голосов
/ 07 июня 2018

Вы бы resolve это

function FirstChar() {
    return new Promise(function(resolve, reject) { resolve(BaseUrl() + "some/suffix");
  });
}

Редактировать Вы также можете сократить его до этого

function FirstChar() {
    return Promise.resolve(BaseUrl() + "some/suffix");
  });
}

Редактировать 2-е Используя значение первого обещания во втором обещании.см асинхронное ожидание

function BaseUrl() {        
    return Promise.resolve(some_string);
}

// using async await
async function FirstChar() {
    const baseurl = await BaseUrl()
    return Promise.resolve(baseurl + "some/suffix";
}
...