我正在通过数组进行映射,然后调用三个异步调用,这些调用返回参数信息以进行另一个调用。我希望代码一次占用一个帐户,并在继续到数组中的下一个帐户之前先经历每个异步调用。现在的问题是,代码正在通过第一个异步调用运行所有帐户,然后移至第二个异步调用,通过所有异步操作运行所有帐户,第三个异步。到目前为止,这是我尝试过的:
height
我也尝试过:
@IBInspectable var leftImage: UIImage? {
didSet {
updateView()
}
}
func updateView() {
if let image = leftImage
{
leftViewMode = UITextField.ViewMode.always
if (UIDevice.current.userInterfaceIdiom == .phone)
{
let imageView = UIImageView(frame: CGRect(x: 0, y: 0, width: 20, height: 20))
imageView.contentMode = .scaleAspectFit
imageView.image = image
imageView.tintColor = color
leftView = imageView
}
if (UIDevice.current.userInterfaceIdiom == .pad)
{
let imageView = UIImageView(frame: CGRect(x: 0, y: 0, width: 30, height: 30))
imageView.contentMode = .scaleAspectFit
imageView.image = image
imageView.tintColor = color
leftView = imageView
}
}
else
{
leftViewMode = UITextField.ViewMode.never
leftView = nil
}
}
我希望循环看起来像:帐户1 ->参数1 ->参数2 -> param3
帐户2 ->参数1 ->参数2 -> param3
相反,我得到:帐户1 ->参数1帐户2 -> param1
帐户1 ->参数2帐户2 -> param2
帐户1 -> param3帐户2 -> param3
答案 0 :(得分:1)
由于您没有使用promises
中的accounts.map
返回,因此根本没有理由使用地图
您可能想要一个简单的for...of
循环
async function report(){
let accounts = await getAccountsForTimezone('Eastern Time (US & Canada)');
for (const account of accounts) {
await delay(1000)
const param1 = await scope1(account)
const param2 = await scope2(account)
const param3 = await scope3(account)
const response = insertData(param1, param2, param3).catch(reject)
}
};