使用promise创建的取消令牌

时间:2018-03-20 10:19:09

标签: javascript promise es6-promise cancellation

我有一个功能,我想使用它并理解

对我来说困难的部分是token.promise和取消功能。有人可以描述下面的功能是如何工作的吗?

package com.myapp.siva.bus;

import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.widget.Toast;

import com.edwardvanraak.materialbarcodescanner.MaterialBarcodeScanner;
import com.edwardvanraak.materialbarcodescanner.MaterialBarcodeScannerBuilder;
import com.google.android.gms.vision.barcode.Barcode;
import com.myapp.siva.R;

public class QrCodeScanningActivity extends AppCompatActivity {

Barcode barcodeResult;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_qr_code_scanning);

    startScan();
}

private void startScan() {
    /**
     * Build a new MaterialBarcodeScanner
     */
    final MaterialBarcodeScanner materialBarcodeScanner = new MaterialBarcodeScannerBuilder()
            .withActivity(this)
            .withEnableAutoFocus(true)
            .withBleepEnabled(false)
            .withBackfacingCamera()
            .withCenterTracker()
            .withText("Scanning...")
            .withResultListener(new MaterialBarcodeScanner.OnResultListener() {
                @Override
                public void onResult(Barcode barcode) {
                    barcodeResult = barcode;
                    String result = barcodeResult.displayValue;
                    Toast.makeText(QrCodeScanningActivity.this, ""+result, Toast.LENGTH_SHORT).show();
  //                        result.setText(barcode.rawValue);
                }
            })
            .build();
    materialBarcodeScanner.startScan();
}

1 个答案:

答案 0 :(得分:0)

令牌是一个具有token.promise的对象,并且可能在将来的某个时间点token.reason上。{/ p>

token.promise是一个实际的承诺,方法.then.catch。显然.then将在取消承诺后调用,reason为唯一参数。

因此,您调用函数let arr = createCancelToken()并获取令牌并从中取消对象let token = arr[0]; let cancel = arr[1]。稍后您可以致电cancel('no reason'); token.promise.then(reason => {})reason为“无理由”