2016-05-27 14 views
0

私は、クライアント側から同期POST要求を送信したいと思います。ダーツ:同期ポストリクエスト

https://www.dartlang.org/articles/json-web-service/#saving-objects-on-the-server

var url = "http://127.0.0.1:8080/programming-languages"; 
request.open("POST", url, async: false); 

しかし、上記の例は、次の構文エラースロー:

キーワード「非同期」が「待つ私たちは「非同期」という名前のパラメータを使用することができますドキュメントによると、 'yield'は、非同期関数またはジェネレータ関数では識別子として使用できません。

どのようにして同期POSTリクエストを送信できますか?

UPDATE(5月27日、20時23分)

私はこの問題の解決するための回避策が見つかりました:

Future<String> deleteItem(String id) async { 
    final req = new HttpRequest() 
     ..open('POST', 'server/controller.php') 
     ..send({'action': 'delete', 'id': id}); 
    // wait until the request have been completed 
    await req.onLoadEnd.first; 
    // oh yes 
    return req.responseText; 
} 

をしかし、それはいないようですので、私は上記の溶液を好きではありません十分にエレガントです。

答えて

0

の既知の問題です。たとえば、次のように

final req = await HttpRequest 
    .postFormData(url, {'action': 'delete', 'id': id}); 
return req.responseText; 
0

これは解決策はpostFormData()代わりのsend()を使用することです。この名前付きパラメータhttps://github.com/dart-lang/sdk/issues/24637

+0

です'$ print'と' print'を同時に許可することで下位互換性を許すので、新しいキーワードが古い変数名と衝突することはありません。 Sigilsは理由のためにそこにいた、人々。 –

+0

Perlもまた新しい問題をいくつか導入しました;-) –

0
Future<String> deleteItem(String id) async { 
final req = new HttpRequest() 
    ..open('POST', 'server/controller.php') 
    ..send({'action': 'delete', 'id': id}); 
// wait until the request have been completed 
await req.onLoadEnd.first; 
// oh yes 
return req.responseText; 

}

この1つはこれを持っていることによって25年前のPerlによって解決される問題だった、時にはあなたは、「PUT」または「DELETE」必要がある点、

+0

'async'と' await'は何も同期しません。これは、非同期実行に対処するための便利な構文です。 –

関連する問題