質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.37%
コールバック

コールバックは他のコードに引数として渡されるコードのことを指します。

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

jQuery

jQueryは、JavaScriptライブラリのひとつです。 簡単な記述で、JavaScriptコードを実行できるように設計されています。 2006年1月に、ジョン・レシグが発表しました。 jQueryは独特の記述法を用いており、機能のほとんどは「$関数」や「jQueryオブジェクト」のメソッドとして定義されています。

非同期処理

非同期処理とは一部のコードを別々のスレッドで実行させる手法です。アプリケーションのパフォーマンスを向上させる目的でこの手法を用います。

Monaca

「Monaca」はiOS、Android、Windows向けのアプリ開発に対応した、Cordovaベースのモバイルアプリ開発プラットフォームです。HTML5、JavaScriptといったWeb標準技術を用いてモバイルアプリ開発を行うことができます。

Q&A

解決済

5回答

9693閲覧

【JavaScript】Promiseオブジェクトとdoneとは、一言で言って何ですか?

WeilSpinor

総合スコア170

コールバック

コールバックは他のコードに引数として渡されるコードのことを指します。

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

jQuery

jQueryは、JavaScriptライブラリのひとつです。 簡単な記述で、JavaScriptコードを実行できるように設計されています。 2006年1月に、ジョン・レシグが発表しました。 jQueryは独特の記述法を用いており、機能のほとんどは「$関数」や「jQueryオブジェクト」のメソッドとして定義されています。

非同期処理

非同期処理とは一部のコードを別々のスレッドで実行させる手法です。アプリケーションのパフォーマンスを向上させる目的でこの手法を用います。

Monaca

「Monaca」はiOS、Android、Windows向けのアプリ開発に対応した、Cordovaベースのモバイルアプリ開発プラットフォームです。HTML5、JavaScriptといったWeb標準技術を用いてモバイルアプリ開発を行うことができます。

0グッド

2クリップ

投稿2019/03/06 17:10

はじめに

プログラミング初心者です。
JavaScriptの勉強のため、あるアプリのサンプルプログラムのJavaScript(おそらくjQuery)のコードを見ていたら、Promiseというオブジェクトが登場しました。
今回は、Promiseというオブジェクトと、doneというメソッド(?)が、一言で言ってどういう動作をするものなのか知りたくて質問させて頂きました。

### 事の経緯
勉強のために参考にしていたアプリというのは、
MonacaというクラウドIDEサービスを利用して作られた『メモ帳アプリ』です。
https://docs.monaca.io/ja/sampleapp/samples/backend_memo/#%E3%83%A1%E3%83%A2%E3%81%AE%E8%BF%BD%E5%8A%A0

メモの内容の保存先として、Monaca Backendという独自のデータベースを利用しており、
そのデータベースのAPI(=独自のオブジェクト群)を利用して、データベース内のメモデータの編集(読み書き)をしたり、新規作成したり、といった操作をする、
という形になっています。

Promiseの登場場面

以下は、上記のメモ帳アプリの解説ページにて、「メモの追加」という項目について、ソースコードを抜粋して解説した記事になります。以下のソースコードの14行目に問題の「done」というメソッド(?)が登場します。

メモの追加
追加ページ上で Save ボタンを押したときに、onSaveBtn() を呼び出します。次に、ページ上で入力された title と content の値を、 addMemo() 関数に渡します。
この関数では、 monaca.cloud.Collection().insert() ( Monaca バックエンド API ) を使用して、 Memo コレクションに、コレクションアイテムを挿入します。

javaScript

1function onSaveBtn() 2{ 3 var title = $("#title").val(); 4 var content = $("#content").val(); 5 if (title != '') 6 { 7 addMemo(title,content); 8 } 9} 10 11function addMemo(title,content) { 12 var memo = MC.Collection("Memo"); 13 14 memo.insert({ title: title, content: content}) 15 .done(function(insertedItem) 16 { 17 console.log('Insert is success!'); 18 $("#title").val(""); 19 $("#content").val(""); 20 //display a dialog stating that the inserting is success 21 $( "#okDialog_add" ).popup("open", {positionTo: "origin"}).click(function(event) 22 { 23 event.stopPropagation(); 24 event.preventDefault(); 25 getMemoList(); 26 $.mobile.changePage('#ListPage'); 27 }); 28 }) 29 .fail(function(err){ console.log('Insert failed!');}) 30}

「done」の一つ手前にある「insert」というAPI独自のオブジェクトの使い方を調べるため、次の解説ページを確認することにしました。https://docs.monaca.io/ja/reference/monaca_api/cloud/collection/#collection-insert
すると、どうやら、この「done」というのは「Promise」というJavaScriptのオブジェクト(というよりjQuery?)のメソッドのようなものだということがわかりました。

Promiseとは?doneとは?

検索にかけてみると、「非同期処理でつかう」「コールバック関数」というフレーズが出てきたのですが、「どういうもので、どういう場面でどんな風に使うものなのか」よくわかりませんでした。(そもそも、コールバック関数を知りません)

Promiseとdoneの解説をしている記事はもちろん色々あるのですが、どの記事も今の私のレベルを超えた予備知識を前提としているような雰囲気で、よくわかりませんでした。

なので、
とりあえず、このプログラムのこの場面に限定して「doneというものがどういう役割を果たしているのか?」を簡潔にご教示頂きたいです。宜しくお願いします。

蛇足~勉強のやり方としてどうなのか~

どうやら、プログラミングというものは、基本のキ的な入門書を読んだ後は、次のステップといったものが特にないらしく、『能動学習的叩き上げ』で勉強していくものらしいので、

突然大海に放り出された気分ですが、
とりあえずアプリを作ってみるか、と考え、やっています。

しかし、そもそも非同期処理やコールバック関数という予備知識も知らないのに、いきなり3歩4歩先の概念であるPromiseというものが出てきてしまうと、さすがに詰まってしまい、勉強効率も落ちます。(1歩2歩さきならいいですが、3歩4歩は飛びすぎで困ります)
「もう少しステップアップ式にできないものなのか…」と思ってしまいました。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

kei344

2019/03/06 17:16

(質問文は編集できます)タイトルおよび質問文から「一言で言って」を外したほうがよいのでは。(「メソッド」とか言われても困るでしょ)
kei344

2019/03/06 17:17

過去の質問について、「解決済」になっていないものが多数見受けられます。解決したものは「ベストアンサー」を選び、自力で解決した場合はその方法を解答欄に書き、もし万が一解決していないのであれば質問を編集するなどしてみてください。
guest

回答5

0

Promise

Promiseオブジェクトとdoneとは、一言で言って何ですか?

Promiseはコールバック関数で処理成功(then)、処理失敗(catch)を待つ仕組みです。
azuさんが『Promiseの本』という大変詳しいサイトを立ち上げて下さっていますので、一読を勧めます。
https://developer.mozilla.org/ja/docs/Web/JavaScript/Reference/Global_Objects/Promise
http://azu.github.io/promises-book/

コールバック関数

検索にかけてみると、「非同期処理でつかう」「コールバック関数」というフレーズが出てきたのですが、「どういうもので、どういう場面でどんな風に使うものなのか」よくわかりませんでした。(そもそも、コールバック関数を知りません)

分からない単語の概念を調べて下さい。
コールバック関数を理解せずして、Promiseを理解する事は出来ません。
これはこういうものであると一言で説明して、全てを理解する程の天才はそうそういません。
分からない内容をより単純な基礎レベルまで落とし込んで各個撃破する必要があります。
https://www.google.com/search?q=javascript+%e3%82%b3%e3%83%bc%e3%83%ab%e3%83%90%e3%83%83%e3%82%af%e9%96%a2%e6%95%b0

done

Promiseにdoneはありません
jQueryにdoneはありますが、勉強目的なら、jQueryは後回しにすることを勧めます。
https://api.jquery.com/deferred.done/
https://www.google.com/search?q=jquery+defferd

Re: WeilSpinor さん

投稿2019/03/07 03:56

think49

総合スコア18189

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

WeilSpinor

2019/03/07 10:35

ご回答ありがとうございます。 >jQueryにdoneはありますが、勉強目的なら、jQueryは後回しにすることを勧めます。 そうなんですが、どこに行ってもjQueryは避けられないみたいなんです。 ある人曰く、 「プログラミングができる」とは「自分のやりたいことを実現できる」ということらしく、 そのための学習の方法は、結局のところ、 「何かを作りながら覚える」以外にないらしいので、 そのためにアプリを作ろうと思い、自分が使いたいモジュールを備えた単純なアプリのソースコードを読んで勉強している、という感じです。 『【プログラミング入門者必見】スマホアプリ開発でよく使われる実用モジュールを通してJavaScriptの概念・イディオムを学ぶサンプルプログラム集【例題と演習】』のような本をやった方がよいのでしょうか? もちろん、できることならば、初心者の私としては promiseなどというコマンドを使わずに、(できればjQueryも使わずに)、 もっと基本的な概念を使って組み立てることができれば、と思うのですが、 しかし、「プログラミングをする」ことと「アプリを制作する」という営みの間には開きがあるようで、 アプリを作る、というレベルの話になると、 かたくなに生のJavaScriptのコードのみで作っているものはあまりないようで、 ふつうはjQueryのようなライブラリだったり、各種APIの力を借りながら実装しているソースコードにしか出会えません。 これは私どもの経験になりますが、(生意気なことを言ってしまい、大変恐縮です) 勉強にしろ芸事にしろ、 一個一個ステップが用意されている、という理想的なやり方をいつでもできるわけではなく、 「時々階段が途切れていて、そこは1,2段ジャンプしなければならない」 「とりあえず与えられた文脈における限定された意味合いだけ理解して、基礎的な話は後回しにする」 という『アクロバティックな勉強法』がどうしても必要な場面というのが、往々にしてあるみたいです。 (私の恩師いわく、「わかったふりをする能力が重要な場合がある」そうです) このアプリのコードに関しては、 doneの部分を除けば、おおむね理解できるように思うので、とりあえずちゃんとした意味は「ブラックボックス」として、ゴリゴリ進めたほうがよいのかな?、とも思いました。 なかなか難しい問題ですね…
WeilSpinor

2019/03/07 10:47

>これはこういうものであると一言で説明して、全てを理解する程の天才はそうそういません。 分からない内容をより単純な基礎レベルまで落とし込んで各個撃破する必要があります。 そう思って一応調べてみたのですが、今回はあまり単純にそうはいかなかったみたいです…。 私の場合、 「まずは小さな要素に分けて理解」→「あとでそれらを組み合わせる」 というやり方よりも、 「塊を場面に応じたイディオム=「型」として覚えこんでしまう」 →「基礎的なお話、理論的なことは、慣れた後に改めて教科書などを読んで、あとからじんわりと理解していく」 というやり方があっているようで、 そのやり方で試している、という感じです。 しかし、こういったやり方は、指導者がいてこそなりたつもので、 独学でやるには難しいのかもしれません…。 少しずれたお話をしてしまい、申し訳ありません。 Promiseのご説明は大変参考になりましたので、感謝申し上げます。 一息ついたら、きちんと勉強したいと思います。 ご回答ありがとうございました。
think49

2019/03/07 12:05

基礎(Promise)を飛ばして、応用(jQuery)から入門する理由がありますか。 「jQueryでWebアプリを作る」がゴールだとして、初心者が初めからjQueryでコーディングを行うのは無謀だとは思いませんか。 どんな素晴らしい技術でも基礎を覚えずに使いこなすことは出来ません。 > かたくなに生のJavaScriptのコードのみで作っているものはあまりないようで、 > ふつうはjQueryのようなライブラリだったり、各種APIの力を借りながら実装しているソースコードにしか出会えません。 「学習目的のコード」と「他人がWebアプリ用に書いたコード」は同じではありません。 学習目的なら「車輪の再発明」も大いに結構と私は思います。
think49

2019/03/07 12:08

> 「まずは小さな要素に分けて理解」→「あとでそれらを組み合わせる」 私も同じ方法です。 この質問の場合、「小さな要素」に分解できていないのが問題だと思います。
WeilSpinor

2019/03/07 14:09 編集

先ほど、codeprepというサイトに登録しました。ステップアップ式にJavaScriptを学べる素晴らしい学習サイトですが、JavaScriptの基本操作コースとオブジェクト指向の理解コースが終わったら、すぐにjQueryの使い方に移っていました。 私が以前本で買ったJavaScriptの入門書にしても、最期のほうにjQueryの紹介と練習問題を設けてます。 結局、JavaScriptを使う以上は、jQueryを使うのが前提というか、セットとして覚えていくしかないのではないでしょうか? では、JavaScriptオンリーで実用的レベルのプログラムのコーディングをするにあたって、参照できる文献がない、ということになってしまいます。 確かに検索すると、昔の趣味ブログみたいなところで、jQueryを使わずに作ったJavaScriptのおもちゃのソースコードは確かに見つかりますが、その程度なんです。正式に勉強したいとなって、こういった少数の非公式なリソースしか教材になりえないなんて、困りませんか? プログラミングの世界は、こうした教科書や参考書のようなものは整備されていないのでしょうか?
think49

2019/03/08 03:58

論点がずれています。 @WeilSpinor さんは「jQueryを覚えるべき」といっており、私は「jQueryを覚えるのが早すぎる」といっています。 三輪車に乗れない人は一輪車にも乗れません。 「コールバック関数を理解しており、コールバック関数を使った自作コードを書けること」「Promiseの本を理解できること」「非同期処理のコードを書けること」は理解している必要があると考えます。 茨の道を進みたいのなら止めません。 親記事にも書いていますが、公式サイト https://api.jquery.com/deferred.done/ にほぼ全てが書かれています。 足りない部分はjquery.jsを解読すれば、全てが分かります。 しかし、私は@WeilSpinorさんには早すぎると思います。
think49

2019/03/09 02:17 編集

To: 低評価を投じられた方 低評価の理由を教えて下さい。
guest

0

ベストアンサー

Promiseとは?doneとは?

要は「イベント駆動」の一種だと考えるといいと思います。

JavaScriptも、そのプログラミングコードをひとつひとつ評価して解決していくフロー的な駆動をするのですが、長い待ち時間が発生する場合、それでは都合が悪い場合があります。
たとえば、ブラウザでユーザー入力をさせる代表的な命令はwindow.promptですが、これはユーザーの入力待ちをしている間、画面がロックしてしまいます。

ご質問の場合、メモにテキストを書き込む待ち時間が発生するのでしょう。これをフロー的に解決するとメモ帳の書き込みが終わるまで「アプリが固まる」わけです。
ここで登場するのが「非同期処理」です。

メモ書込を指示→────┐
↓           │
(他の処理をしてる) (メモ書込が終わった)
↓           │
↓           ↓
(他の処理をしてる) メモ書込終了処理

こうすることによって、待ち時間の間に「アプリが固まる」こともなく処理をすることができます。

さて、次にPromiseとはなんであるか、なのですが、これはその「非同期処理」を書きやすくしたものです。
歴史的な背景は「コールバック地獄 Promise」とかでググっていただくとして、処理のイメージとしてはこんな感じです。

メモ書込を指示→─────┐
↓            │
↓←─Promise ─────(はじめたよー)
↓            │
メモ書込終了処理を指示  │
↓    ↓       │
↓   done       │
↓    ↓       │
↓    ↓     (メモ書込が終わった)
↓    ↓       │
↓    ↓←resolve ←(おわったよー)
↓    ↓       
↓    ↓       
↓  メモ書込終了処理
↓           
(他の処理をしてる)

ものすごく大雑把に言うと、
Promiseは、処理指示に対して「終わったら連絡するよ」と返すことで、
doneは、「終わったらこれをやっておいて」と指示することで、
resolveは、「終わったよ」という連絡です。

ご理解いただけましたでしょうか。

投稿2019/03/07 01:09

Lhankor_Mhy

総合スコア36898

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

WeilSpinor

2019/03/07 10:48

ご回答ありがとうございます。参考にさせていただきます
guest

0

しかし、そもそも非同期処理やコールバック関数という予備知識も知らないのに、いきなり3歩4歩先の概念であるPromiseというものが出てきてしまうと、さすがに詰まってしまい、

そういう自覚がしっかりあるのなら、まず、非同期処理やコールバックについて勉強すればいいのでは?
「3,4歩先の概念が出てきてしまい、手も足も出ない」という最悪の状況ではないわけですから。1,2歩目が非同期処理やコールバックだという方向性もあっています。

基本のキ的な入門書を読んだ後は、

それはよい事です。入門書を読むより、コードを読んだり書いたりを薦める人もたまにいますが、それでは間違った知識を得てしまう可能性が高いです。

次のステップといったものが特にないらしく、『能動学習的叩き上げ』で勉強していくものらしいので、

次としては、公式リファレンスを読む力を付ける事でしょうか。

さらにそこから先は、万人に共通する道はないと思います。
センスがあり、自分で物を考えられる力がある人は、書いてみて、うまくいかないところや、分からない所を調べるという方法で良いと思いますが、
考える力が弱い人が書き始めると、泥沼にはまって、こういうサイトで、訳の分からない質問をする事になります。そういう人は、まず読んで完全に理解するところから始めるのがいい気がします。

投稿2019/03/07 00:17

otn

総合スコア85778

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

WeilSpinor

2019/03/07 10:53

ご回答ありがとうございます。 ある人曰く、 「プログラミングができる」とは「自分のやりたいことを実現できる」ということらしく、 そのための学習の方法は、結局のところ、 「何かを作りながら覚える」以外にないらしいので、 そのためにアプリを作ろうと思い、自分が使いたいモジュールを備えた単純なアプリのソースコードを読んで勉強している、という感じです。 『【プログラミング入門者必見】スマホアプリ開発でよく使われる実用モジュールを通してJavaScriptの概念・イディオムを学ぶサンプルプログラム集【例題と演習】』のような本をやった方がよいのでしょうか? もちろん、できることならば、初心者の私としては promiseなどというコマンドを使わずに、(できればjQueryも使わずに)、 もっと基本的な概念を使って組み立てることができれば、と思うのですが、 しかし、「プログラミングをする」ことと「アプリを制作する」という営みの間には開きがあるようで、 アプリを作る、というレベルの話になると、 かたくなに生のJavaScriptのコードのみで作っているものはあまりないようで、 ふつうはjQueryのようなライブラリだったり、各種APIの力を借りながら実装しているソースコードにしか出会えません。 これは私どもの経験になりますが、(生意気なことを言ってしまい、大変恐縮です) 勉強にしろ芸事にしろ、 一個一個ステップが用意されている、という理想的なやり方をいつでもできるわけではなく、 「時々階段が途切れていて、そこは1,2段ジャンプしなければならない」 「とりあえず与えられた文脈における限定された意味合いだけ理解して、基礎的な話は後回しにする」 という『アクロバティックな勉強法』がどうしても必要な場面というのが、往々にしてあるみたいです。 (私の恩師いわく、「わかったふりをする能力が重要な場合がある」そうです) このアプリのコードに関しては、 doneの部分を除けば、おおむね理解できるように思うので、とりあえずちゃんとした意味は「ブラックボックス」として、ゴリゴリ進めたほうがよいのかな?、とも思いました。 なかなか難しい問題ですね… 「困難は分割して考える」というデカルトの言葉に従い、 一応コールバックや非同期処理についても独立に調べてみたのですが、今回はうまくいかなかったみたいです…。 場合によっては、 「まずは小さな要素に分けて理解」→「あとでそれらを組み合わせる」 というやり方よりも、 「塊を場面に応じたイディオム=「型」として覚えこんでしまう」 →「基礎的なお話、理論的なことは、慣れた後に改めて教科書などを読んで、あとからじんわりと理解していく」 というやり方が良いこともあるようで、 そのやり方で試している、という感じです。 しかし、こういったやり方は、指導者がいてこそなりたつもので、 独学でやるには難しいのかもしれません…。 少しずれたお話をしてしまい、申し訳ありません。
otn

2019/03/07 12:51

万人に共通する道はないと書いたとおりだと思います。 > (私の恩師いわく、「わかったふりをする能力が重要な場合がある」そうです) このアドバイスは非常に良いと思います。 ただ、人によっては、それっきり分からないままの人もいれば、何度か経験しているうちに、自分の頭で考えて、本当に分かる人もいるでしょう。 私からのアドバイスとしては、「分かった振りをしているが、本当には分かっていない物リスト」を作っておくことでしょうか。で、それを消し込んでいければ良い。 貴方の場合は、文章を読んでいる限りでは、大丈夫な気がしますが、そうじゃなくて、自分の頭で考える力の弱い人の場合、設計できるプログラマになるためには、どうしたら良いのか正直分かりません。猫の手プログラマには十分なれると思うのですが。 自分の頭で考える力のある人の場合、別のアプローチとしては、低階層のことをしっかり理解していれば、上位階層のことは、大抵のことなら見て考えればだいたい分かるという方法もあります。 低階層=CPUの動く仕組み、OSの基本動作、言語処理系の仕組みなど。
WeilSpinor

2019/03/07 17:40

なるほど、 私自身、理論物理を勉強してきた人間、ということがあってか、 プログラミングを勉強していると低階層のことが気になってしまう性分です。(だからこういう質問を立ててしまう) コンピューターのすべてを包括的に理解するという目的の場合は、 むしろそういうボトムアップ式に勉強するのもありかもしれません。 しかし、今勉強しているのは、アプリ開発であったりして、 なかなか低階層の処理は見えないようにしていて、むしろ、 「様々なパッケージの使い方を知っているかいないか」 ということが重要な気がするので、なかなか辛いものです…。 「分かったふりをしてスルーしたものリスト」を早速つくりました。 そんな感じでやっていこうと思います。 その公式リファレンスというものも、書店などで 見てみようと思います。
otn

2019/03/08 00:47

> その公式リファレンスというものも、書店などで いや、今時は、変化が早いので、書籍にはなってないのが普通です。 JavaScriptならMozillaのサイト、Python PHP Ruby Java等もそれぞれサイトがあります。 https://developer.mozilla.org/ja/docs/Web/JavaScript
guest

0

Promiseとdoneの解説をしている記事はもちろん色々あるのですが、どの記事も今の私のレベルを超えた予備知識を前提としているような雰囲気で、よくわかりませんでした。

本末転倒かもしれませんが、今の理解を超えていると感じたのは実は非常に良いことで、今はまだそこに手を出すべきではないということにもなります。
(ドキュメントや解説サイトを読んで自分でも動かしてみても分からないこともありますが、つまりそういうこと)

ただなんとなくコピペで使ってなんとなくうまいこと動いて、ではすぐに詰まりますので、「予備知識」というところ、きちんとおさえていってはどうでしょうか。
必ず導入しなければいけないかと言うとそこは要件次第なところでもありますし、もう少し簡単なところからステップアップされてはどうでしょうか。
階段は1段1段のぼっていくもので、2段飛ばし3段飛ばしのようなことはすべきではないです。

投稿2019/03/06 20:59

m.ts10806

総合スコア80875

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

m.ts10806

2019/03/06 21:03

本当に一言で、となると既に指摘があるように「メソッド」になりますし、 英語だとdoの過去分詞、「~された」ですね。 つまり、doneは「非同期処理"がされた"あとにその処理結果をうけとって次の処理へ・・・」みたいな。イメージです。
WeilSpinor

2019/03/09 09:16

ご回答ありがとうございます。参考にさせていただきます
guest

0

おそらく、insertによってデータベースへの書き込みが成功したらdoneが呼ばれるということだと思います。
プログラム言語によって様々な設計思想がありますが、同期処理に着目すると、例えばjavascriptではデータベースへの書き込みの成功失敗を問わず、次の処理を行ってしまうのに対し、rubyは成功失敗の結果を待ってから次の処理に移ります。
プログラムでは、javascriptではdoneやfailの中にあるcallbackによってデータベースの結果を使った処理を予約しているのに対し、rubyではresult=addmemo(title, content)で結果を受け取り、その下にif result==true〜と処理を書くといったことをします。

投稿2019/03/06 19:13

urbainleverrier

総合スコア200

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

WeilSpinor

2019/03/09 09:15

ご回答ありがとうございます。rubyという言語は非同期処理が考えがjavascript に比べて希薄な言語なんですかね?参考にさせていただきます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.37%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問