أهلا. أحاول بناء Async Tasks لتطبيق elmish الخاص بنا. أرغب في تنفيذ طلبين غير متزامنين بالتوازي وتطبيق ردودهما على نتائجي (النمط التطبيقي). مشكلتي هي أنني بحاجة إلى بدء تشغيل Asyncs مختلفين (أو أكثر) بالتوازي ولا يمكنني استخدام Async. بالتوازي لأن Asyncs يقوم بتغليف أنواع نتائج مختلفة. تكمن المشكلة في أن Async.StartChild لا يبدو أنه تم تنفيذه في Fable ولكني لا أحصل على أي أخطاء في التجميع أو تحذيرات في أدوات تطوير المتصفح.
لا يتم تنفيذ الطلبات غير المتزامنة مطلقًا. هل لدى أي شخص تلميح كيف أحقق ما أريد؟
type Task<'Result, 'Error> =
Async<Result<'Result, 'Error>>
let private (<!>) = Result.map
let private (<*>) = Result.apply
let map2Parallel func taskA taskB =
async {
let! result1Async = taskA |> Async.StartChild // start first request but do not wait
let! result2Async = taskB |> Async.StartChild // start second request in parallel
let! result1 = result1Async
let! result2 = result2Async
let result =
func <!> result1 <*> result2
return result
}
متوقع: بدء كلتا العمليتين غير المتزامنتين.
فعلي: لا شيء يحدث ولا يوجد خطأ تجميع ولا تحذير / خطأ في وحدة تحكم المتصفح
حسنًا ، أنت على حق لم يتم تنفيذ Async.StartChild
بعد. أعتقد أنه من الممكن القيام بذلك ، سألقي نظرة. شكرا لتوضيح ذلك! 👍
شكرا!
شكرا لك! سيتم نشر الإصلاح في الإصدار التجريبي التالي من Fable 1.3. نأمل اليوم :)