Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/19.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript js:str.replace()替换为Promise_Javascript_Regex_Replace_Promise_Es6 Promise - Fatal编程技术网

Javascript js:str.replace()替换为Promise

Javascript js:str.replace()替换为Promise,javascript,regex,replace,promise,es6-promise,Javascript,Regex,Replace,Promise,Es6 Promise,我想异步替换字符串的一部分 var str=abc var str2=str.replace/a/g,m=>{ 新Promiser=>rx,j=>jrejected .thenresult=>result } console.logstr2 我尝试使用异步/等待: var str=abc var str2=str.replace/a/g,asyncm=>{ 返回等待新Promiser=>rx,j=>jrejected .thenresult=>result } console.logstr2/[

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

var str=abc var str2=str.replace/a/g,m=>{ 新Promiser=>rx,j=>jrejected .thenresult=>result } console.logstr2 我尝试使用异步/等待:

var str=abc var str2=str.replace/a/g,asyncm=>{ 返回等待新Promiser=>rx,j=>jrejected .thenresult=>result } console.logstr2/[object Promise]bc 在.replace回调中,可以从匹配的子字符串构造承诺数组,然后忽略.replace的返回值。从承诺数组中,调用Promise.all以获取替换数组。然后,再次使用相同的模式调用.replace,并使用replacer函数将每个匹配的子字符串替换为替换数组中的顶部项:

//用实际API调用所需的代码替换以下函数 const getReplacement=str=>Promise.resolve`[${str}]`; 常量承诺=[]; var str=abcabcb str.replace/[ab]/g,m=>{ promises.pushgetreplacement; }; 承诺,一切承诺 .thenresults=>{ const output=str.replace/[ab]/g,=>results.shift; console.logoutput; } .catcherr=>{ //处理错误 }; 在.replace回调中,可以从匹配的子字符串构造承诺数组,然后忽略.replace的返回值。从承诺数组中,调用Promise.all以获取替换数组。然后,再次使用相同的模式调用.replace,并使用replacer函数将每个匹配的子字符串替换为替换数组中的顶部项:

//用实际API调用所需的代码替换以下函数 const getReplacement=str=>Promise.resolve`[${str}]`; 常量承诺=[]; var str=abcabcb str.replace/[ab]/g,m=>{ promises.pushgetreplacement; }; 承诺,一切承诺 .thenresults=>{ const output=str.replace/[ab]/g,=>results.shift; console.logoutput; } .catcherr=>{ //处理错误 }; 移除零件,然后它将返回resolve或reject值

移除零件,然后它将返回resolve或reject值



每次更换都会更换相同的东西吗?如果a被替换,它总是会被替换为相同的替换字符/子字符串?new Promiser=>rx,j=>jrejected我真的认为你需要一个复习课程来了解承诺是如何实现的created@JaromandaX我很确定这部分只是一个很小的例子,我在这里有一个承诺,如何使用它并正确替换?我想异步替换字符串的一部分-为什么除了replace callback不支持这一点之外,您也无法让它正常工作,您为什么要这样做?这是否回答了您的问题?每次更换都会更换相同的东西吗?如果a被替换,它总是会被替换为相同的替换字符/子字符串?new Promiser=>rx,j=>jrejected我真的认为你需要一个复习课程来了解承诺是如何实现的created@JaromandaX我很确定这部分只是一个很小的例子,我在这里有一个承诺,如何使用它并正确替换?我想异步替换字符串的一部分-为什么除了replace callback不支持这一点之外,您也无法让它正常工作,您为什么要这样做?这是否回答了您的问题?就因为OP想让鱼飞起来数据这将运行getReplacementmimmediately@Sheldeeb不,getReplacement是异步的-看看它如何返回承诺?您可以将其替换为任何其他异步逻辑,如网络请求的实际逻辑,并且总体逻辑仍然可以正常工作。1您在第一个中没有使用相同的正则表达式。请替换为第二个。第一个RE是/-/,与a-b中的-匹配,但第二个RE是/'-'/,但没有's,因此不会发生匹配。2由于替换是异步的,您必须将所有内容都放在承诺内。全部都是。然后,仅仅因为OP想让鱼飞就呼叫?:数据这将运行getReplacementmimmediately@Sheldeeb不,getReplacement是异步的-看看它如何返回承诺?您可以将其替换为任何其他异步逻辑,如网络请求的实际逻辑,并且总体逻辑仍然可以正常工作。1您在第一个中没有使用相同的正则表达式。请替换为第二个。第一个RE是/-/,与a-b中的-匹配,但第二个RE是/'-'/,但没有's,因此不会发生匹配。2由于替换是异步的,所以必须将所有内容都放在承诺内。全部都是。然后调用动态结果{当条件为falsy时?我刚才给出了一个示例,让我重写它将始终是一个承诺对象,无论在哪个阶段它都不会是falsy。不,它不会是承诺对象。它将是resolve或reject valueasync-Wait只返回已解决的值。因此,我们不会得到承诺对象。ifdynamicResult{什么时候条件是错误的?我只是举了个例子,让我重新写一遍,它永远都是承诺的对象,不管怎样
在什么阶段,它永远不会是虚假的。不,它不会成为承诺的对象。它将是resolve或reject valueasync-Wait仅返回已解析的值。所以我们没有得到承诺的对象。
var str = "abc"
var str2 = str.replace(/a/g, async(m)=>{
  return await new Promise((r,j)=>r("x"))
})