當前位置: 首頁>>代碼示例>>TypeScript>>正文


TypeScript context.Slot類代碼示例

本文整理匯總了TypeScript中@wry/context.Slot的典型用法代碼示例。如果您正苦於以下問題:TypeScript Slot類的具體用法?TypeScript Slot怎麽用?TypeScript Slot使用的例子?那麽, 這裏精選的類代碼示例或許可以為您提供幫助。


在下文中一共展示了Slot類的4個代碼示例,這些例子默認根據受歡迎程度排序。您可以為喜歡或者感覺有用的代碼點讚,您的評價將有助於係統推薦出更棒的TypeScript代碼示例。

示例1: it

  it("works with @wry/context", function () {
    const nameSlot = new Slot<string>();
    function withName<T = any>(name: string, exec: (task: Task<T>) => void) {
      return new Task<T>(task => nameSlot.withValue(name, () => exec(task)));
    }

    return withName("parent", task => {
      assert.strictEqual(nameSlot.getValue(), "parent");
      task.resolve(123);
    }).then(oneTwoThree => withName("child", child => {
      assert.strictEqual(nameSlot.getValue(), "child");

      const sibling = withName("sibling", task => {
        task.resolve(nameSlot.getValue());
      }).then(result => {
        assert.strictEqual(result, "sibling");
        assert.strictEqual(nameSlot.getValue(), "child");
      });

      setTimeout(() => {
        assert.strictEqual(nameSlot.getValue(), "child");
        child.resolve(withName("grandchild", grandchild => {
          assert.strictEqual(nameSlot.getValue(), "grandchild");
          sibling.then(() => {
            assert.strictEqual(nameSlot.getValue(), "grandchild");
            grandchild.resolve(oneTwoThree);
          }, grandchild.reject);
        }));
      }, 10);

    })).then(result => {
      assert.strictEqual(nameSlot.hasValue(), false);
      assert.strictEqual(result, 123);
    });
  });
開發者ID:benjamn,項目名稱:wry,代碼行數:35,代碼來源:tests.ts

示例2:

 child.resolve(withName("grandchild", grandchild => {
   assert.strictEqual(nameSlot.getValue(), "grandchild");
   sibling.then(() => {
     assert.strictEqual(nameSlot.getValue(), "grandchild");
     grandchild.resolve(oneTwoThree);
   }, grandchild.reject);
 }));
開發者ID:benjamn,項目名稱:wry,代碼行數:7,代碼來源:tests.ts

示例3: withName

    }).then(oneTwoThree => withName("child", child => {
      assert.strictEqual(nameSlot.getValue(), "child");

      const sibling = withName("sibling", task => {
        task.resolve(nameSlot.getValue());
      }).then(result => {
        assert.strictEqual(result, "sibling");
        assert.strictEqual(nameSlot.getValue(), "child");
      });

      setTimeout(() => {
        assert.strictEqual(nameSlot.getValue(), "child");
        child.resolve(withName("grandchild", grandchild => {
          assert.strictEqual(nameSlot.getValue(), "grandchild");
          sibling.then(() => {
            assert.strictEqual(nameSlot.getValue(), "grandchild");
            grandchild.resolve(oneTwoThree);
          }, grandchild.reject);
        }));
      }, 10);

    })).then(result => {
開發者ID:benjamn,項目名稱:wry,代碼行數:22,代碼來源:tests.ts

示例4: exec

 return new Task<T>(task => nameSlot.withValue(name, () => exec(task)));
開發者ID:benjamn,項目名稱:wry,代碼行數:1,代碼來源:tests.ts


注:本文中的@wry/context.Slot類示例由純淨天空整理自Github/MSDocs等開源代碼及文檔管理平台,相關代碼片段篩選自各路編程大神貢獻的開源項目,源碼版權歸原作者所有,傳播和使用請參考對應項目的License;未經允許,請勿轉載。