回答編集履歴

1

追加

2017/11/23 10:24

投稿

HayatoKamono
HayatoKamono

スコア2415

test CHANGED
@@ -1,6 +1,8 @@
1
+ # 1
2
+
1
3
  ![イメージ説明](169890ce9946de02b6a79a1a6c154683.gif)
2
4
 
3
- [https://teratail.storage.googleapis.com/uploads/contributed_images/169890ce9946de02b6a79a1a6c154683.gif](https://teratail.storage.googleapis.com/uploads/contributed_images/169890ce9946de02b6a79a1a6c154683.gif)
5
+ [アニメーションGIF](https://teratail.storage.googleapis.com/uploads/contributed_images/169890ce9946de02b6a79a1a6c154683.gif)
4
6
 
5
7
 
6
8
 
@@ -153,3 +155,141 @@
153
155
 
154
156
 
155
157
  ```
158
+
159
+
160
+
161
+ #2
162
+
163
+ ![イメージ説明](350cb20d5f1b095dabc37153f4e3e8db.gif)
164
+
165
+ [アニメーションGIF](https://teratail.storage.googleapis.com/uploads/contributed_images/350cb20d5f1b095dabc37153f4e3e8db.gif)
166
+
167
+ ```
168
+
169
+
170
+
171
+ const fakeAjax = (fileName, callback) => {
172
+
173
+ const MAX = 5000;
174
+
175
+ const MIN = 1000;
176
+
177
+ const delay = Math.floor(Math.random() * (MAX - MIN) + MIN);
178
+
179
+
180
+
181
+ const responseMockData = {
182
+
183
+ "1.txt": "1st request",
184
+
185
+ "2.txt": "2nd request",
186
+
187
+ "3.txt": "3rd request",
188
+
189
+ "4.txt": "4th request",
190
+
191
+ "5.txt": "5th request"
192
+
193
+ };
194
+
195
+
196
+
197
+ setTimeout(() => {
198
+
199
+ callback(responseMockData[fileName]);
200
+
201
+ }, delay);
202
+
203
+ }
204
+
205
+
206
+
207
+ const output = console.log.bind(this);
208
+
209
+
210
+
211
+ const getFile = (fileName) => {
212
+
213
+ let memoizedResult;
214
+
215
+ let memoizedCallback;
216
+
217
+
218
+
219
+ fakeAjax(fileName, (response) => {
220
+
221
+ if (memoizedCallback) {
222
+
223
+ return memoizedCallback(response);
224
+
225
+ }
226
+
227
+ memoizedResult = response;
228
+
229
+ });
230
+
231
+
232
+
233
+ return (callback) => {
234
+
235
+ if (memoizedResult) {
236
+
237
+ return callback(memoizedResult);
238
+
239
+ }
240
+
241
+ memoizedCallback = callback;
242
+
243
+ };
244
+
245
+ }
246
+
247
+
248
+
249
+ const getFile1 = getFile('1.txt');
250
+
251
+ const getFile2 = getFile('2.txt');
252
+
253
+ const getFile3 = getFile('3.txt');
254
+
255
+ const getFile4 = getFile('4.txt');
256
+
257
+ const getFile5 = getFile('5.txt');
258
+
259
+
260
+
261
+
262
+
263
+ getFile1(resultForFile1 => {
264
+
265
+ output(resultForFile1);
266
+
267
+ getFile2(resultForFile2 => {
268
+
269
+ output(resultForFile2);
270
+
271
+ getFile3(resultForFile3 => {
272
+
273
+ output(resultForFile3);
274
+
275
+ getFile4(resultForFile4 => {
276
+
277
+ output(resultForFile4);
278
+
279
+ getFile5(resultForFile5 => {
280
+
281
+ output(resultForFile5);
282
+
283
+ output('all done!');
284
+
285
+ })
286
+
287
+ })
288
+
289
+ })
290
+
291
+ })
292
+
293
+ })
294
+
295
+ ```