将字符串连接到 Promise

concatenate a string to a promise

我如何将此承诺包含在字符串中?

假设我有

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

我在下面使用上面的函数 (BaseUrl()):

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

如何将字符串连接到 Promise?

你会resolve

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

编辑 你也可以缩短到这个

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

编辑第二个 在第二个承诺中使用第一个承诺的价值。参见 async await

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

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

仅对 return 字符串使用 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))

不知道为什么你的第二个函数被称为 FirstChar...忽略它,你是说

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

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

b/c return 类型 一个(字符串)Promise。