[英]Return a value to String.replace from within a callback function
我想從回調函數String.replace
值返回給String.replace
。 鍵入並發布代碼使我意識到這是多么愚蠢。
但是,我希望有一種方法可以用實際有效的代碼實現相同的概念。 我覺得它就在我眼前,我只是無法抓住它。
content.replace(/{{(.*?)}}/g, function (a, b) {
recurse(b, function(content2) {
return content2;
});
});
不知道我是否理解了您的意思,但是如果您打算將某些內容從內部函數返回到外部函數,則應該遵循以下內容:
content.replace(/{{(.*?)}}/g, function (a, b) {
return recurse(b, function(content2) {
return content2;
});
});
如果您要查找替換中的表達式:
function replacer(matchedSubstring, p1, p2, offset, totalString) {
return p2 + ' ' + p1.toUpperCase();
}
newString = oldString.replace(/(\w+)\s(\w+)/, replacer);
請注意,RegExp中的組數和替換程序的參數列表(此處為p1,p2)中的參數數必須匹配。
參見MDN上的String.replace(): https : //developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/RegExp/exec
您可以實現一些(可能很糟糕)的“鎖定”概念。 我在這里寬松地使用術語“鎖定”。 無論如何,它將迫使您的代碼同步。
content.replace(/{{(.*?)}}/g, function (a, b) {
var myFakeLock = false;
var outputToReplace = null;
var otherCallback = function(someInput) {
... // do some stuff here
outputToReplace = someCalculationResult;
myFakeLock = true; // last line!
};
// Call asynchronous function
someFunctionWithCallback(otherCallback);
// Busy-wait until our callback completes
while (!myFakeLock) { }
return outputToReplace;
});
我並沒有采取任何措施來形成適當的閉合或其他任何東西,因此可能需要進行一些修改。
在此解決方案中,在完成所有異步計算之前,不會返回String.replace
回調。 請注意您的使用方式。 您不想以這種方式鎖定UI線程。 從其他線程調用它。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.