js:带有Promise的str.replace()

我要异步替换字符串的一部分

var str = "abc"
var str2 = str.replace(/a/g,m=>{
  new Promise(r=>r("x"),j=>j("rejected"))
      .then(result=>result)

})

console.log(str2)

我尝试使用async / await:

var str = "abc"
var str2 = str.replace(/a/g,async(m)=>{
  return await new Promise(r=>r("x"),j=>j("rejected"))
      .then(result=>result)

})

console.log(str2) //[object Promise]bc
XIAOYING178 回答:js:带有Promise的str.replace()

.replace回调中,您可以从匹配的子字符串构造一个Promises数组,然后忽略.replace 的返回值。从Promises数组中调用Promise.all以获得替换数组。然后,使用相同的模式再次调用.replace ,并使用replacer函数将每个匹配的子字符串替换为替换数组中的顶部项目:

// Replace the below function with the code required for your actual API call
const getReplacement = str => Promise.resolve(`[${str}]`);

const promises = [];
var str = "abcabcb"
str.replace(/[ab]/g,m => {
  promises.push(getReplacement(m));
});
Promise.all(promises)
  .then((results) => {
    const output = str.replace(/[ab]/g,() => results.shift());
    console.log(output);
  })
  .catch((err) => {
    // handle errors
  });

,

删除然后返回确定或拒绝值的部分

var str = "abc"
var str2 = str.replace(/a/g,async(m)=>{
  return await new Promise((r,j)=>r("x"))
})
本文链接:https://www.f2er.com/2693622.html

大家都在问