Доступ к аргументу, который был передан в функцию обратного вызова - PullRequest
0 голосов
/ 25 июня 2019

У меня есть простой класс, который реализует AsyncTask:

class Async( private val workload: () -> String,
             private val callback: ( httpResponse : String ) -> Unit
) : AsyncTask<String, String, String>()
{
    override fun doInBackground( vararg params: String? ): String?
    {
        return workload()
    }

    override fun onPostExecute( result: String )
    {
        callback( result ) // <-- argument being passed to the callback
        super.onPostExecute( result )
    }
}

Я передаю два аргумента этому классу:

string workload() - function which takes long time to execute and returns a string
callback( string ) - the callback function to which I want to pass the value, which was returned by the workload()

Все работает нормально, за исключением того, что я не могу найти способ доступа к аргументу в функции обратного вызова:

Async(
    {
        workload()
    },
    {
        // how to "receive" the "test" string returned by the workload()? 
        Log.d( "myapp", ???_argumentPassedToCallback_??? );
    }
).execute( "" )


fun workload() : String
{
    Thread.sleep( 1000 )     
    return "test";
}

Есть предложения, пожалуйста? Спасибо!

1 Ответ

1 голос
/ 25 июня 2019
Async(
    {
        workload()
    },
    { response ->
      Log.d("foo", "The response is: $response")
    }
).execute( "" )
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...