是否有某种方法可以使用_instanceof
在NOT <?php
$inputStr = 'x-y-z 1-2-3-4 x-y-z';
$outputStrWords = [];
$inputStrWords = explode(' ', $inputStr);
foreach ($inputStrWords as $key => $word) {
$charactersInWord = explode('-', $word);
$allCharsDigit = true;
foreach ($charactersInWord as $char) {
$allCharsDigit &= is_numeric($char) ? true : false;
}
$outputStrWords[$key] = $word;
if($allCharsDigit) {
$outputStrWords[$key] = str_replace('-', '', $word);
}
}
$outputStr = implode(' ', $outputStrWords);
echo $outputStr; exit;
循环中调用异步函数(例如foreach,map),并仅在所有异步函数完成后才继续执行其余代码?
for
答案 0 :(得分:1)
从技术上讲,您可以“执行”,但您不想这样做。如果您有很多需要解决的承诺,最好使用Promise.all()
来解决。
答案 1 :(得分:1)
您正在寻找Promise.all()
。它获取Promise
s的数组(或其他可迭代对象),并返回一个新的Promise
,当所有输入Promise
都解析时,解析的内容就解决了。输入Promise
是并行执行的(比循环中每个await
的{{1}}都要好得多)。
您Promise
await
。
Promise
答案 2 :(得分:0)
可以在await
函数中使用async
。因此,将其与async
之外的for
中使用的其他语句一起使用,即do..while
和while
循环语句。
是否可以在NOT for循环中调用异步函数(例如foreach,map)
这是另一种情况。像forEach
这样的基于回调的方法都有自己的功能。在常规函数中不能使用await
:
arr.forEach(() => {
await ... // syntax error
});
将async
函数与await
和forEach
is a common mistake一起使用,因为它会导致被忽略的承诺:
arr.forEach(async () => {
await ... // isn't awaited outside function
});
由于async..await
的工作方式,可以将map
与async
一起使用,map
使用const arrOfPromises = arr.map(async () => {
await ...
});
返回的promise并映射到结果数组:
map
应该显式地链接承诺,以便在await Promise.all(arrOfPromises);
函数之外等待:
matplotlib.dates.DateFormatter