[英]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.