首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >我如何使用成员并发与回调函数?

我如何使用成员并发与回调函数?
EN

Stack Overflow用户
提问于 2021-10-08 23:00:55
回答 1查看 134关注 0票数 0

我想使用成员-并发处理一个地址集合的批验证。地址验证由第三方API完成,该API调用服务器端函数,然后在服务器完成工作后“调用”客户端。

这似乎是一个地方使用余烬-并发加法,但我不知道如何正确地使用它。我认为挑战在于服务器端进程启动后立即返回对服务器的api调用。如何使成员并发性知道对服务器的调用和回调函数之间的连接,以便“任务”等待回调的完成,作为任务已经完成的标志?我现在让代码工作的方式“结果”总是空的(可以理解)。

代码语言:javascript
复制
import Component from '@glimmer/component';
import { inject as service } from '@ember/service';
import { task } from 'ember-concurrency';

export default class BatchAddressInputComponent extends Component {
    @service api;
    addressList = "";

    //addressList populated from a TextArea
    @task *DoAddressValidation ()
    {
        let results = yield this.api.BatchQueryAddresses(this.addressList);
        alert(results); //not surprisingly, 'results' is always null
    }
}
    
    
import Service from '@ember/service';

export default class ApiService extends Service {
  _api;

  //API *should* be available as a global object, imported as a <script> on
  // application start-up.
  constructor() {
    super(...arguments);
    this._api = API;
  }

  BatchQueryAddresses(addressList) {
    this._api.BatchQueryAddress(addressList, 2, this._queryAddressCallback, null, 2000);
  }

  _queryAddressCallback(result, error) {
    if (error) {
        alert("Error: " + result);
        return;
    }
    var j = JSON.stringify(result, null, ' ');
    return(j);
  }
}
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-10-09 17:38:04

您需要返回一个Promisenew Promise(...)构造函数正是为此创建的:

代码语言:javascript
复制
BatchQueryAddresses(addressList) {
  return new Promise((resolve, reject) => {
    this._api.BatchQueryAddress(
      addressList,
      2,
      (result, error) => {
        if (error) {
          reject("Error: " + result);
        } else {
          const j = JSON.stringify(result, null, ' ');
          resolve(j);
        }
      },
      null,
      2000
    );
  });
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/69502468

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档