簡體   English   中英

js: str.replace() 與 Promise

[英]js: str.replace() with Promise

我想異步替換字符串的一部分

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

})

console.log(str2)

我嘗試使用異步/等待:

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

.replace回調中,您可以從匹配的子字符串構造一個.replace數組,然后忽略.replace的返回值 Promise.all數組中,對其調用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 });

刪除 then 部分,它將返回解決或拒絕值

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM