菜鸟教程小白 发表于 2022-12-11 17:07:24

javascript - 在 ios ionic 应用程序中使用 javascript promise


                                            <p><p>我需要在 ionic 中使用以下 promise (ios 显然在 android 上没问题):</p>

<pre><code>var Attendees = Parse.Object.extend(&#34;Attendees&#34;);

    return Promise.all(eventDetails.map(detail =&gt; {
      return Promise.all([new Promise((res, rej) =&gt; {
            var query2 = new Parse.Query(Attendees);
            query2.equalTo(&#34;event_id&#34;, detail .id_event);   
            query2.count({
                success: function(number) {
                  detail[&#34;n_requests_received&#34;] =number;
                  alert(&#34;received&#34;)
                  res(&#39;Some value if required&#39;); //These are needed or promise chain will hang
                }
            });
      }),
      new Promise((res, rej) =&gt; {
            var query3 = new Parse.Query(Attendees);
            query3.equalTo(&#34;event_id&#34;, detail .id_event);
            query3.equalTo(&#34;status&#34;, &#34;confirmed&#34;)
            query3.count({
                success: function(number) {
                  detail[&#34;n_requests_confirmed&#34;] =number;
                   // alert(&#34;confirmed&#34;)
                   res(&#39;Some value if required&#39;); //These are needed or promise chain will hang
                }
            });
      })]);
    }));
</code></pre>

<p>你知道怎么做吗?</p></p>
                                    <br><hr><h1><strong>Best Answer-推荐答案</ strong></h1><br>
                                            <p><p>我使用 deferred 是为了让你可以运行一个 Promise 链,而不是将它们分开。如果调用发生错误,您还需要处理错误情况(两个 Promise 使用相同的错误函数)。它会正确地拒绝 promise ,以便您妥善处理。</p>

<pre><code>var promises = [];

eventDetails.forEach(function(detail) {
    var deferred = $q.defer();

    new Parse.Query(&#39;Attendees&#39;)
    .equalTo(&#34;event_id&#34;, detail.id_event)
    .count().then(function(number) {
      detail[&#34;n_requests_received&#34;] =number;
      alert(&#34;received&#34;);
      return new Parse.Query(&#39;Attendees&#39;)
      .equalTo(&#34;event_id&#34;, detail .id_event)
      .equalTo(&#34;status&#34;, &#34;confirmed&#34;)
      .count();
    }).then(function(confirmedCount) {
      detail[&#34;n_requests_confirmed&#34;] = confirmedCount;
      deferred.resolve(&#39;I have resolved this promise&#39;);
    }, function(err) {
      console.error(JSON.stringify(err));
      deferred.reject(&#39;Error: &#39; + JSON.stringify(err));
    });

    promises.push(deferred.promise());
});

$q.all(promises).then(function(res) {
    // completed all promises w/ no errors
}, function(err) {
    console.error(JSON.stringify(err));
});
</code></pre></p>
                                   
                                                <p style="font-size: 20px;">关于javascript - 在 iosionic 应用程序中使用 javascriptpromise ,我们在Stack Overflow上找到一个类似的问题:
                                                        <a href="https://stackoverflow.com/questions/38618329/" rel="noreferrer noopener nofollow" style="color: red;">
                                                                https://stackoverflow.com/questions/38618329/
                                                        </a>
                                                </p>
                                       
页: [1]
查看完整版本: javascript - 在 ios ionic 应用程序中使用 javascript promise