В Vapor 3 в синхронной функции это работает:
return try Process.execute( "/usr/local/bin/demo", [ "p1", "p2" ] )
Однако, если я пытаюсь использовать фьючерсы и замыкания в маршруте, таком как:
router.get("async") { request -> Future<String> in
return Process.asyncExecute( "/usr/local/bin/demo", [ "p1", "p2" ], on:request ).flatMap(to:String) { output in
switch output {
case .stdout(let data): return(String(data: data, encoding: .utf8) ?? "")
case .stderr(let data): return(String(data: data, encoding: .utf8) ?? "")
}
}
}
, я получаюошибка компилятора Missing argument for parameter #4 in call
, показанная в конце request
в вызове asyncExecute
во второй строке кода выше.Я попытался заменить flatMap
на transform
, но это не изменит ошибку.
Я использовал подобные конструкции в прошлом и не могу понять, почему эта не работает.